Невозможно установить утверждения клиента при получении токена конфиденциального клиентского приложения.

Я пытаюсь использовать библиотеку Python MSAL для вызова другого пользовательского API в Azure(предоставляется через AppRegistration с открытой областью API).

Я пишу демон-приложение, которое будет делать запрос. Следуйте документации Azure здесь:

https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-daemon-app-configuration?tabs=python

В последнем примере в этой документации Azure предлагается добавить утверждения о пользовательских утверждениях, таких какclient_ipкоторый будет возвращен в токене.

Точно так же я хотел бы, чтобы требование было установлено наTestВ качестве примера:

      app = msal.ConfidentialClientApplication(
    config["client_id"], authority=config["authority"],
    client_credential={"thumbprint": config["thumbprint"], "private_key": open(
        config['private_key_file']).read()},
    client_claims={"preferred_username": "Test"}
)

Однако, когда я получаю токен, используя следующий код, претензия не находится в токене.

      result = app.acquire_token_for_client(scopes=config["scope"])

В рамках регистрации приложения для приложения-демона я добавилpreferred_usernameв качестве необязательного утверждения (для маркеров доступа).

Я не уверен, что не так с моим подходом, или я неправильно истолковал намерениеclient_claims?

1 ответ

Я попытался воспроизвести то же самое в своей среде и получил результаты, как показано ниже:

Я создал приложение Azure AD и настроил пользовательскиетребовать:

введите описание изображения здесь

Я сгенерировал токен через Postman, используя следующие параметры:

      https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default
grant_type:client_credentials

введите описание изображения здесь

Необязательные утверждения не включаются в токен, как показано ниже:

введите описание изображения здесь

Обратите внимание : получение необязательных утверждений возможно только с потоком кода авторизации , потоком ROPC , неявным потоком . В настоящее время поток учетных данных клиента не поддерживает добавление каких-либо дополнительных настраиваемых утверждений.

Поток учетных данных клиента извлекает токен в контексте приложения и не будет иметь никаких связанных с пользователем утверждений, таких какpreferred_username,given_nameилиemailи т. д. Итак, вам нужно сгенерировать токен в контексте пользователя, чтобы получить утверждения.

В качестве альтернативы я сгенерировал токен доступа, используя конечную точку, как показано ниже:

      https://login.microsoftonline.com/tenantID/oauth2/v2.0/authorize?client_id=ClientID&response_type=token&redirect_uri=redirecturi&scope=user.read&response_mode=fragment&state=12345&nonce=678910

Необязательные утверждения включены в токен, как показано ниже:

введите описание изображения здесь

Ссылка:

утверждения клиента (MSAL) — Microsoft Entra | Майкрософт учиться

Другие вопросы по тегам