Поддержка MSAL / ADAL для новых / старых модулей пакета SDK для Python для Azure

Наше приложение начинается с аутентификации ADAL с помощью Azure python SDK 2.0.0. Теперь, когда я начал обновлять azure.mgmt.servicebus до 6.0.0, я обнаружил исключение при использовании учетных данных ADAL.

creatednamespace = servicebus_client.namespaces.begin_create_or_update(resource_group_name, namespace_name, namespaceparameter).result()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/azure/mgmt/servicebus/operations/_namespaces_operations.py", line 563, in begin_create_or_update
    **kwargs
  File "/usr/local/lib/python3.6/dist-packages/azure/mgmt/servicebus/operations/_namespaces_operations.py", line 502, in _create_or_update_initial
    pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 211, in run
    return first_node.send(pipeline_request)  # type: ignore
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 71, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/mgmt/core/policies/_base.py", line 47, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 71, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 71, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 71, in send
    response = self.next.send(request)
  [Previous line repeated 1 more time]
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/policies/_redirect.py", line 157, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/policies/_retry.py", line 436, in send
    response = self.next.send(request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_base.py", line 69, in send
    _await_result(self._policy.on_request, request)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/_tools.py", line 29, in await_result
    result = func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/azure/core/pipeline/policies/_authentication.py", line 93, in on_request
    self._token = self._credential.get_token(*self._scopes)

Я прочитал документацию Azure о том, что для новых функций потребуется MSAL или azure.identity, я использовал azure.identy, и это сработало. Теперь вопрос в том, что у нас есть сочетание старого и нового пакетов Azure SDK, какой аутентификации мы будем следовать? Я пробовал старый пакет с azure.identity, похоже, все еще работает. Но я не уверен, есть ли какая-то проблема, о которой я мог бы не знать. Надеюсь, мы сможем получить четкое руководство по аутентификации Azure для поддержки как старых, так и новых пакетов SDK Python.


person user10116    schedule 18.12.2020    source источник


Ответы (1)


Пакет azure.identity предоставляет набор классов учетных данных для использования с клиентами Azure SDK, которые поддерживают аутентификацию токена Azure Active Directory (AAD). Mow Microsoft предлагает клиентам использовать этот пакет для аутентификации с другими SDK для Azure python. Но обратите внимание, что он поддерживает не все пакеты Azure. Если пакет не использует azure.core, мы используем его для аутентификации, мы столкнемся с ошибкой. Для получения дополнительных сведений см. здесь и здесь.

person Jim Xu    schedule 21.12.2020
comment
Спасибо за подробное объяснение. Кажется, нам нужно иметь два набора поддержки аутентификации в зависимости от того, какой пакет мы используем и использует ли пакет azure.core или нет. Это немного неудобно, но я думаю, нам просто нужно с этим жить. - person user10116; 22.12.2020
comment
Я уже добавил к ответу, но, похоже, теперь он каким-то образом проявляется. - person user10116; 24.12.2020