Преобразование идентификатора ресурса из ADAL в MSAL в Python - PullRequest
1 голос
/ 05 марта 2020

Нашей системе необходим доступ к ресурсам в Azure, и поэтому в нашем текущем коде аутентификации у нас есть поддержка ADAL, которая хорошо подходит для этой цели.

Теперь, когда MSAL заменяет ADAL мы хотели бы предварительно добавить поддержку для него. Сейчас мы создаем функцию, которая генерирует oauth2 access_token, используя MSAL вместо ADAL.

Мы следовали руководству по миграции , но есть одна проблема, которая мы не находим ответ на вопрос.

При использовании ADAL мы предоставляем resource_id, содержащий идентификатор, который идентифицирует систему, о которой мы говорим. Обычно это resource_id было скопировано с портала Azure.

В MSAL нет resource_id, вместо этого мы должны использовать список scopes. Если мы наивно используем существующую resource_id в качестве такой области видимости:

resource_id = "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX"
scopes = [ resource_id ]

Мы получим следующую ошибку:

Error fetching MSAL token (invalid_scope):
    AADSTS70011: The provided request must include a 'scope' input parameter.
    The provided value for the input parameter 'scope' is not valid.
    The scope XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX is not valid.

E   Trace ID: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
E   Correlation ID: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
E   Timestamp: 2020-03-05 09:36:03Z

Итак, вопрос в том, что такое правильный способ подготовки идентификатора ресурса в форме XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX в допустимую область для MSAL?

РЕДАКТИРОВАТЬ : Ответ на этот Вопрос был протестирован и использован в небольшом пакете Python для упрощения аутентификации с помощью Azure с использованием запросов под названием reports_ms_auth , которые также доступны в виде пакета pypi .

1 Ответ

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

Вы можете использовать область действия /.default, чтобы помочь перенести ваши приложения из конечной точки v1.0 (adal) в конечную точку платформы идентификации Microsoft (msal). Например, значение области действия https://graph.microsoft.com/.default функционально совпадает с конечными точками v1.0 resource=https://graph.microsoft.com.

resource_id = "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX"
scopes = [ f"{resource_id}/.default" ]

Ссылка:

Область действия /.default

Области действия для веб-API, принимающего токены v1.0.

...