Azure AD Python - непредвиденная ошибка состояния опроса invalid_client - PullRequest
1 голос
/ 05 марта 2020
    store_token = context.acquire_token_with_device_code(resource_uri, code, client_id)
  File "/Users/jyao/Desktop/azureblobtest/lib/python3.7/site-packages/adal/authentication_context.py", line 273, in acquire_token_with_device_code
    return self._acquire_token(token_func)
  File "/Users/jyao/Desktop/azureblobtest/lib/python3.7/site-packages/adal/authentication_context.py", line 109, in _acquire_token
    return token_func(self)
  File "/Users/jyao/Desktop/azureblobtest/lib/python3.7/site-packages/adal/authentication_context.py", line 266, in token_func
    token = token_request.get_token_with_device_code(user_code_info)
  File "/Users/jyao/Desktop/azureblobtest/lib/python3.7/site-packages/adal/token_request.py", line 398, in get_token_with_device_code
    token = client.get_token_with_polling(oauth_parameters, interval, expires_in)
  File "/Users/jyao/Desktop/azureblobtest/lib/python3.7/site-packages/adal/oauth2_client.py", line 345, in get_token_with_polling
    wire_response)
adal.adal_error.AdalError: Unexpected polling state invalid_client

Как можно избавиться от этой ошибки после ввода кода устройства и успешного входа.

шаги:

  1. Из python интерактивная подсказка, запустите этот код [1] (все модули уже загружены). Где:
authority_url = 'https://login.microsoftonline.com/my_tenant_id'
resource_uri = "https://storage.azure.com/"
context = adal.AuthenticationContext(authority_uri)
code = context.acquire_user_code(resource_uri, client_id)
print(code['message'])
store_token = context.acquire_token_with_device_code(resource_uri, code, client_id)
credentials = AADTokenCredentials(store_token, client_id)

2.Открыть URL-адрес https://microsoft.com/devicelogin в браузере.

3.Ввести код E8B2DVT67

4.Подтвердите имя приложения, оно правильное.

5.Аутентификация с использованием учетных данных пользователя.

6.Получите в браузере сообщение «Вы вошли в приложение TEST-APP». на вашем устройстве. Теперь вы можете закрыть это окно. "

7.Получите ошибку, показанную в моем предыдущем сообщении в интерактивном приглашении python.

Я использую собственное приложение и обновляю манифест и установите «allowPublicClient»: истинное разрешение.

1 Ответ

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

Ваш код работает нормально.

Если мы установим allowPublicClient: false, мы столкнемся с этой ошибкой.

enter image description here

После обновления allowPublicClient на true он будет работать. Примечание: Для конфигурации вступит в силу некоторая задержка .

enter image description here

...