Маркер доступа не работает Пользовательская политика Azure AD - PullRequest
1 голос
/ 08 мая 2019

Я создал собственную политику для Azure B2C, добавил jwt.ms в качестве URL-адреса для ответа, и все, кажется, работает нормально.Когда я вхожу в систему, меня перенаправляют на jwt.ms с указанием токена и его содержимого.Однако, когда я пытаюсь связать мой угловой интерфейс с этой пользовательской политикой, она, похоже, не работает.Требуется тип ответа id_token token, но когда я использую этот тип ответа, я получаю сообщение об ошибке " Это приложение не имеет достаточных разрешений для этого веб-ресурса для выполнения операции. "

Когда я использую тип ответа id_token, он, кажется, работает нормально, и я получаю ответ с токеном JWT.

Я думал, что проблема может быть в настройках Неявное предоставление в приложениях, поэтому я попытался включить Токены доступа и Идентификаторы для всехприложения, но это не помогло.

Настройки неявного предоставления

Запрос выглядит следующим образом:

https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/authorize
?p=b2c_1a_signup_signin&client_id={client_id}
&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2F&response_type=id_token%20token
&scope=openid%20https%3A%2F%2F{tenant}.onmicrosoft.com%2Fapi%2Fuser_impersonation
&nonce={nonce}
&state={state}

Так что если вы замените символы, то этовыглядит следующим образом:

https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/authorize
?p=b2c_1a_signup_signin&client_id={client_id}
&redirect_uri=http://localhost:4200/&response_type=id_token token
&scope=openid https://{tenant}.onmicrosoft.com/api/user_impersonation
&nonce={nonce}
&state={state}

Я ожидаю, что поток входа в систему выдаст как токен JWT ID, так и токен доступа.

Редактировать: я создал совершенно нового клиента B2C со стандартным пользователем Signupsigninпоток и я до сих пор испытываю те же проблемы.Поэтому я пришел к выводу, что это не проблема пользовательской политики, а проблема, вызванная конфигурацией в Azure или клиентском приложении.

1 Ответ

0 голосов
/ 10 мая 2019

После долгих экспериментов я узнаю о вашей проблеме.Я думаю, вы не пытаетесь в правильном формате.Даже я не знаю, на какой документ вы ссылаетесь.Хорошо, первая проблема ...

Вы получаете эту ошибку "This application does not have sufficient permissions against this web resource to perform the operation"

Причина

Вы не установили API access в своемцелевое приложение на лазурном портале.Чтобы добиться этого, вы должны добавить API access в свое заявление.

Допустим, у вас есть два Published scopes в вашем заявлении арендатора B2C, как показано ниже:

enter image description here

Создать доступ к API

Чтобы избежать вышеуказанной ошибки Add Доступ к API.Для этого перейдите в свое приложение и выберите API access, после чего вы увидите кнопку Add сверху.нажмите и справа откроется окно API access, просто нажмите Ok.См. Снимок экрана ниже:

enter image description here

После успешного выполнения API Access Он должен выглядеть следующим образом

enter image description here

Примечание: Надеюсь, что это решит вашу ошибку при попытке отправить запрос.

B2C id_token и токен доступа

Выполните следующие шаги для Id_token

Процесс доступа к токену ID

https://YourB2CTenant.b2clogin.com/tfp/YourB2CTenant.onmicrosoft.com/YourPolicy/oauth2/v2.0/authorize?

client_id = YourApplicationId

& redirect_uri = Ваш ответ из приложения

& scope = openid

& response_type = id_token

Посмотрите нижев Id_token:

enter image description here

Примечание: Просто заполните вышеуказанный формат и вставьте в свойбраузер без пробелов между ними.Если это правильно, то на странице входа будет предложено.После входа вам будет выдан id_token в вашем браузере.

B2C Access Token

Следуйте приведенному ниже формату In POSTMAN:

Тип предоставления: код авторизации

URL обратного вызова: URL вашего ответа

AuthURL: https://YourTenant.b2clogin.com/YourTenant.onmicrosoft.com/YourFlow/PolicyName/oauth2/v2.0/authorize?

URL токена доступа: https://YourTenant.b2clogin.com/YourTenant.onmicrosoft.com/oauth2/v2.0/token?p=YourFlow/PolicyName

Идентификатор клиента: Идентификатор вашего приложения

Секрет клиента = Ключ приложения

Область действия = любой из ваших Published scopes

Процесс запроса Post Man

Перейдите к почтальону и нажмите Authorization Tab и выберите type как OAuth 2.0 См. Снимок экрана ниже:

enter image description here

Для получения токена доступа нажмите Get New Access Token. Вам будет предложено в следующем окне заполнить его в вышеуказанном формате.

enter image description here

enter image description here

После нажатия кнопки Request Token вам будет предложено войти в окно, после успешного входа в систему вы получите access_token в ответ.Как показано ниже:

enter image description here

Примечание: В B2C не поддерживается способ получения `Id-Token и access_tokenвместе в одном запросе.Вы должны достичь этого в отдельном запросе.Для более подробной информации вы можете обратиться здесь

Если у вас все еще есть проблемы, пожалуйста, не стесняйтесь поделиться здесь в комментарии.Спасибо и счастливого кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...