Azure AD B2 C Пользовательская политика, как поместить области приложения в токен доступа - PullRequest
0 голосов
/ 10 февраля 2020

Вот конфигурация для Azure AD B2 C, создайте два приложения: web и api. добавил две области чтения и записи в область действия API. настроить веб-приложение для веб-приложения. протестировано со встроенными пользовательскими потоками, например, зарегистрируйтесь, войдите в систему. запустите поток для веб-приложения, получите токен доступа, области действия в токене.

теперь создайте настраиваемую политику для использования мультитенантов для аутентификации пользователи с Azure AD. создал пользовательскую регистрацию / в политике. запустите политику, получите токен доступа, указав области действия API в токене доступа, однако токен возврата не содержит утверждений о сфере действия. у меня вопрос, как настроить пользовательскую политику, чтобы иметь области API в токене доступа?

1 Ответ

0 голосов
/ 10 февраля 2020

Когда вы запускаете пользовательскую политику, она возвращает только токен идентификатора, а не токен доступа.

Таким образом, ваши заявки на область действия не будут включены в токен идентификатора.

Вам следует см. Запрос токена доступа в Azure Active Directory B2 C.

После того, как вы добавили приложение веб-API в Azure Active Directory B2 C tenant , используйте поток кода авторизации для получения токена доступа.

GET https://<tenant-name>.b2clogin.com/tfp/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize?
client_id=<application-ID>
&nonce=anyRandomValue
&redirect_uri=https://jwt.ms
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&response_type=code

Ответ с кодом авторизации должен быть похож на этот пример:

https://jwt.ms/?code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...

После успешного получения код авторизации, вы можете использовать его для запроса токена доступа:

POST <tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name> HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<application-ID>
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...
&redirect_uri=https://jwt.ms
&client_secret=2hMG2-_:y12n10vwH...

Ответ:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrN...",
    "token_type": "Bearer",
    "not_before": 1549647431,
    "expires_in": 3600,
    "expires_on": 1549651031,
    "resource": "f2a76e08-93f2-4350-833c-965c02483b11",
    "profile_info": "eyJ2ZXIiOiIxLjAiLCJ0aWQiOiJjNjRhNGY3ZC0zMDkxLTRjNzMtYTcyMi1hM2YwNjk0Z..."
}

Подробнее здесь .

...