Войдите в систему ASP. Net Базовое веб-приложение -> API с индивидуальными учетными записями пользователей, используя Azure AD B2C. - PullRequest
0 голосов
/ 08 апреля 2020

Я настроил веб-приложение с ASP. NET Razor Pages with -> Индивидуальные учетные записи пользователей -> Подключиться к существующему хранилищу пользователей в облаке (Azure AD B2 C).

enter image description here

Это работает очень хорошо, и я могу одновременно зарегистрироваться и войти в веб-приложение.

enter image description here

Однако, следуя руководству по API, я не понимаю, как выполнить вход.

enter image description here

Пример Controller / weatherforecast просто возвращает HTTP 401 при запуске веб-приложения.

enter image description here

Глядя на структуру файла, я тоже не могу найти никаких подсказок, но это может быть похоже на строительные леса.

{ ссылка }

enter image description here

Если я закомментирую [Authorize] из WeatherForecastController, я получу HTTP 200, так что мне нужно вероятно, это просто токен из Azure AD B2 C, который отправляется на контроллер в запросе GET.

Я знаю, что клиент и приложение B2 C работают, так как я использую одно и то же приложение для API, как я сделал с веб-приложением. Он был настроен с использованием собственного руководства Microsoft:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant

1 Ответ

0 голосов
/ 08 апреля 2020

Исправлено с помощью этих руководств:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview https://docs.microsoft.com/en-us/azure/active-directory-b2c/access-tokens

У меня были некоторые проблемы, когда я получил ошибку "AADB2C90205: This application does not have sufficient permissions against this web resource to perform the operation. множество раз. Оказалось, что я не объявил правильные области применения для приложения.

enter image description here

Поэтому первый шаг - убедиться, что у вас есть область чтения для вашего Azure AD B2 C заявка под Published scopes:

enter image description here

Затем под API access добавьте вашу заявку с прочтенной областью.

enter image description here

Затем выполните запрос GET с этим форматом. Самый простой способ проверить это использовать его в Chrome или любом другом браузере:

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

Убедитесь, что redirect_uri присутствует как Reply URL для вашего приложения.

enter image description here

Это должно дать вам такой результат, как после входа в систему, как https://jwt.ms/?code=... или https//localhost:44376/signin-oidc?code= в зависимости от redirect_uri. В примере Microsoft используется https://jwt.ms, но я предпочитаю хранить свои коды на доменах, которые я контролирую.

Скопируйте значение из параметра кода и затем выполните запрос POST, я использую Почтальон.

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=<app-key>

client_secret из ключей:

enter image description here

Правильный ответ должен выглядеть следующим образом:

enter image description here

Затем можно скопировать значение для access_token и получить доступ ваш локальный API с Bearer Authorization. Чтобы просмотреть содержимое вашего access_token, вы можете скопировать значение в https://jwt.ms/

enter image description here

enter image description here

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