Правильный способ получения учетных данных Microsoft Graph API - PullRequest
0 голосов
/ 16 марта 2020

У меня есть приложение, которое должно подключаться к Graph API с учетными данными моего клиента для получения данных.

Чтобы сгенерировать учетные данные, я сделал следующее (python код

from msal import PublicClientApplication

AUTHORITY = 'https://login.microsoftonline.com/common'
MICROSOFT_LOGIN_ADDRESS = 'https://login.microsoftonline.com'

def generate_token(client_id, scopes):
    app = PublicClientApplication(client_id, authority=AUTHORITY)
    flow = app.initiate_device_flow(scopes=scopes)
    print(flow['message'])
    token = app.acquire_token_by_device_flow(flow)

    return token


token = generate_token(client_id, scopes)

refresh_token = token['refresh_token']
request_url =f"{MICROSOFT_LOGIN_ADDRESS}/{token['id_token_claims']['tid']}/oauth2/token

, затем я получаю refresh_token и request_url для получения access_token:

payload = { "client_id": client_id,
                   "scope": scopes,
                   "client_secret": client_secret,
                   "grant_type": "refresh_token",
                   "refresh_token": refresh_token,
            }
headers = {"Content-Type": "application/x-www-form-urlencoded"}

response = requests.post(url=request_url,
                         headers=headers, 
                         data=payload)

access_token = json.loads(response.text)['access_token']

Это работало нормально, пока администратор клиента не изменил свой пароль, и я не начал получать ошибку:

"AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password.״

Интересно, как правильно получить refre sh токен

1 Ответ

1 голос
/ 16 марта 2020

Из документации

Refre sh токены могут быть аннулированы или отменены в любое время по разным причинам.

Документация включает в себя таблицу , в которой указано, какие события вызывают отмену . Для клиентского приложения publi c пользователь, изменяющий свой пароль, всегда будет отзывать существующие токены refre sh.

...