Python AzureAD login, refreshtoken and call graph API

Parameter.Js:

<br />{
"resource": "https://graph.microsoft.com/",
"tenant" : "{directory_id}",
"authorityHostUrl" : "https://login.microsoftonline.com",
"clientid" : "app_id",
"username" : "username",
"password" : "password"
}

Test.py:

<br />import json
import logging
import os
import sys
import adal

 

parameters_file = (sys.argv[1] if len(sys.argv) == 2 else
os.environ.get('ADAL_SAMPLE_PARAMETERS_FILE'))

if parameters_file:
with open(parameters_file, 'r') as f:
parameters = f.read()
sample_parameters = json.loads(parameters)
else:
raise ValueError('Please provide parameter file with account information.')

authority_url = (sample_parameters['authorityHostUrl'] + '/' +
sample_parameters['tenant'])
GRAPH_RESOURCE = '00000002-0000-0000-c000-000000000000'
RESOURCE = sample_parameters.get('resource', GRAPH_RESOURCE)

#uncomment for verbose log
#turn_on_logging()

context = adal.AuthenticationContext(
authority_url, validate_authority=sample_parameters['tenant'] != 'adfs',
api_version=None)

########################################################
# below is the token based on username/password
########################################################
tokenRet = context.acquire_token_with_username_password(
RESOURCE,
sample_parameters['username'],
sample_parameters['password'],
sample_parameters['clientid'])
token = tokenRet['accessToken']
print('Here is the access token get by username/password')
print(json.dumps(token, indent=2))

 

 

########################################################
# below code to get access token based on refresh token
#########################################################
refresh_token = tokenRet['refreshToken']
retToken = context.acquire_token_with_refresh_token(
refresh_token,
sample_parameters['clientid'],
RESOURCE)
token = retToken['accessToken']
print('Here is the token acquired from the refreshing token')
print(json.dumps(token, indent=2))

 

###########################################################
# below is the user profile information get from azure graph api
# for more information:
# https://developer.microsoft.com/en-us/graph/graph-explorer
############################################################
import urllib2
req = urllib2.Request('https://graph.microsoft.com/v1.0/users')
req.add_header('Authorization', 'Bearer '+token)
resp = urllib2.urlopen(req)
content = resp.read()
print('below is the user profile info:')
print(content)

Author: lanliang

Programmer.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s