def get_authorization_url(redirect_uri): logger.debug('Entering get_authorization_url.') logger.debug(' redirect_uri: {0}'.format(redirect_uri)) authorization_url = authorize_url.format(client_registration.client_id(), quote(redirect_uri)) logger.debug('Authorization url: {0}'.format(authorization_url)) logger.debug('Leaving get_authorization_url.') return authorization_url
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
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()
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