python 3 azureADにログインしazure graph apiを呼び出す


parameters.json :
 {
   "resource": "https://graph.microsoft.com/",
   "tenant" : "{your_directoryId}",
   "authorityHostUrl" : "https://login.microsoftonline.com",
   "clientid" : "{your_app_id}",
   "username" : "{username}",
   "password" : "{password}"
 }

test.py:
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)