Контекст:
- Azure AD B2C для клиента
- Настроен внешний поставщик удостоверений
- Настроен процесс входа в систему B2C (вход в систему)
- API backend defined as Application with 2 scopes in AAD B2C of this Tenant
- "Admins and users" can consent
- Внешний клиент / Стороннее приложение (конфиденциально), определенное как Приложение в AAD B2C этого Арендатора
- External client/Third Party app has permissions on the 2 scopes
- Status is "nothing", I did not grant admin consent, I want the users to give consent themselves
- In Enterprise applications | User settings
- Users can consent to apps accessing company data on their behalf: YES
- С согласия и разрешений | Настройки согласия пользователя = ›Разрешить согласие пользователя для приложений. Все пользователи могут разрешить любому приложению доступ к данным организации.
URL авторизации:
https://xxx.b2clogin.com/xxx.onmicrosoft.com/oauth2/v2.0/authorize
?p=B2C_1_signup_login
&client_id=xxx
&nonce=defaultNonce
&redirect_uri=xxx
&scope=offline_access%20openid%20profile%20email%20https%3A%2F%xxx.onmicrosoft.com%2F6D6E9DF9-4546-47D8-8EDB-D65EC89A0E90%2Fproduct_scope_2
&response_type=code
&code_challenge=ThisIsntRandomButItNeedsToBe43CharactersLong
&code_challenge_method=plain
Пользователь перенаправляется к внешнему провайдеру IDP, входит в систему. Согласие пользователя не запрашивается. URL-адрес обратного вызова вызывается с code
, который можно обменять на id_token
. Аудитория (aud
) - это client_id
клиентского приложения, а не API.
Если я даю согласие администратора, code
можно обменять на access_token
и id_token
, и аудитория будет в порядке (API client_id
).
Что я должен настроить, чтобы пользователи просили дать согласие для клиентского приложения + области? Мне не удалось найти ни одной статьи об этом: согласие пользователя И внешний поставщик удостоверений.