示例#1
0
def get_access_info_from_authcode(auth_code, redirect_uri):
    logger.debug('Entering get_access_info_from_authcode.')
    logger.debug('  auth_code: {0}'.format(auth_code))
    logger.debug('  redirect_uri: {0}'.format(redirect_uri))

    logger.debug('Sending request to access token endpoint.')
    post_data = {
        'grant_type': 'authorization_code',
        'code': auth_code,
        'redirect_uri': redirect_uri,
        'resource': discovery_resource,
        'client_id': client_registration.client_id(),
        'client_secret': client_registration.client_secret()
    }
    r = requests.post(access_token_url, data=post_data, verify=verifySSL)
    logger.debug('Received response from token endpoint.')
    logger.debug(r.json())

    # Get the discovery service access token and do discovery
    try:
        discovery_service_token = r.json()['access_token']
        logger.debug('Extracted access token from response: {0}'.format(
            discovery_service_token))
    except:
        logger.debug('Exception encountered, setting token to None.')
        discovery_service_token = None

    if (discovery_service_token):
        # Add the refresh token to the dictionary to be returned
        # so that the app can use it to request additional access tokens
        # for other resources without having to re-prompt the user.
        discovery_result = do_discovery(discovery_service_token)
        logger.debug('Discovery completed.')
        discovery_result['refresh_token'] = r.json()['refresh_token']

        # Get the user's email from the access token and add to the
        # dictionary to be returned.
        json_token = parse_token(discovery_service_token)
        logger.debug('Discovery token after parsing: {0}'.format(json_token))
        discovery_result['user_email'] = json_token['upn']
        logger.debug('Extracted email from token: {0}'.format(
            json_token['upn']))
        logger.debug('Leaving get_access_info_from_authcode.')
        return discovery_result
    else:
        logger.debug('Leaving get_access_info_from_authcode.')
        return None
示例#2
0
def get_access_token_from_refresh_token(refresh_token, resource_id):
    logger.debug('Entering get_access_token_from_refresh_token.')
    logger.debug('  refresh_token: {0}'.format(refresh_token))
    logger.debug('  resource_id: {0}'.format(resource_id))
    
    post_data = { 'grant_type' : 'refresh_token',
                  'client_id' : client_registration.client_id(),
                  'client_secret' : client_registration.client_secret(),
                  'refresh_token' : refresh_token,
                  'resource' : resource_id }
                  
    r = requests.post(access_token_url, data = post_data, verify = verifySSL)
    
    logger.debug('Response: {0}'.format(r.json()))
    # Return the token as a JSON object
    logger.debug('Leaving get_access_token_from_refresh_token.')
    return r.json()
示例#3
0
def get_access_info_from_authcode(auth_code, redirect_uri):
    logger.debug('Entering get_access_info_from_authcode.')
    logger.debug('  auth_code: {0}'.format(auth_code))
    logger.debug('  redirect_uri: {0}'.format(redirect_uri))
    
    logger.debug('Sending request to access token endpoint.')
    post_data = { 'grant_type' : 'authorization_code',
                  'code' : auth_code,
                  'redirect_uri' : redirect_uri,
                  'resource' : discovery_resource,
                  'client_id' : client_registration.client_id(),
                  'client_secret' : client_registration.client_secret() }
    r = requests.post(access_token_url, data = post_data, verify = verifySSL)
    logger.debug('Received response from token endpoint.')
    logger.debug(r.json())
    
    # Get the discovery service access token and do discovery
    try:
        discovery_service_token = r.json()['access_token']
        logger.debug('Extracted access token from response: {0}'.format(discovery_service_token))
    except:
        logger.debug('Exception encountered, setting token to None.')
        discovery_service_token = None
        
    if (discovery_service_token):
        # Add the refresh token to the dictionary to be returned
        # so that the app can use it to request additional access tokens
        # for other resources without having to re-prompt the user.
        discovery_result = do_discovery(discovery_service_token)
        logger.debug('Discovery completed.')
        discovery_result['refresh_token'] = r.json()['refresh_token']
        
        # Get the user's email from the access token and add to the
        # dictionary to be returned.
        json_token = parse_token(discovery_service_token)
        logger.debug('Discovery token after parsing: {0}'.format(json_token))
        discovery_result['user_email'] = json_token['upn']
        logger.debug('Extracted email from token: {0}'.format(json_token['upn']))
        logger.debug('Leaving get_access_info_from_authcode.')
        return discovery_result
    else:
        logger.debug('Leaving get_access_info_from_authcode.')
        return None