#azure #asp.net-web-api #azure-active-directory
#azure #asp.net-web-api #azure-active-directory
Вопрос:
У меня есть мой конфиденциальный клиент и клиент ресурсов, зарегистрированный в AAD. Конфиденциальный клиент имеет разрешения API для доступа к ресурсному клиенту. После того, как я вошел в систему с конфиденциального клиента с моими учетными данными, как я могу отправить запрос ресурсному клиенту?
На основе документов ms
Например, если URI идентификатора приложения вашего веб-API являетсяhttps://contoso.com/api и ваше имя области — Employees.Read.Все, полный объем:https://contoso.com/api/Employees.Read.All
Мне недостаточно примера, чтобы понять, например, где токен доступа?
Ответ №1:
Вы могли бы использовать поток кода аутентификации для получения токена доступа.
Сначала перейдите code
по URL в вашем браузере. На этом шаге вам необходимо войти в систему.
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
amp;response_type=code
amp;redirect_uri=http://localhost/myapp/
amp;response_mode=query
amp;scope=https://contoso.com/api/Employees.Read.All
amp;state=12345
Затем получите access_token с кодом.
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={your-client-id}
amp;scope=https://contoso.com/api/Employees.Read.All
amp;code={the code from the previous step}
amp;redirect_uri=http://localhost/myapp/
amp;grant_type=authorization_code
amp;client_secret={your-client-secret}
О неявном потоке предоставления:
Этот поток обычно используется для одностраничных приложений, и неявный грант представляет больше рисков, чем другие гранты. Пожалуйста, проверьте, подходит ли неявное предоставление для вашего приложения, смотрите здесь. Если нет, я все равно рекомендую вам использовать auth code flow.
Примечание: Чтобы позволить ему работать, сначала необходимо выбрать токены доступа в разделе Неявного предоставления на портале, перейдите к регистрации приложений -> ваше приложение -> Аутентификация.
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
amp;response_type=token
amp;redirect_uri=http://localhost/myapp/
amp;scope=https://contoso.com/api/Employees.Read.All
amp;response_mode=fragment
amp;state=12345
amp;nonce=678910
amp;prompt=none
Комментарии:
1. Это поток учетных данных клиента? Не могу ли я получить токен доступа, используя страницу входа в Microsoft?
2. Нет, это просто поток кода аутентификации. поток учетных данных клиента используется для приложения, а не для пользователя.
3. @RonaldAbellano «получите токен доступа, используя страницу входа в Microsoft». Вы имеете в виду, что вызываете URL с помощью браузера, а затем получаете access_token напрямую?
4. ДА. Итак, пользователь является участником-арендатором в моем AAD. Я зарегистрировал конфиденциальный клиент, в который пользователь может войти. И у меня есть открытый API приложения ресурсов. С клиента я буду использовать API приложения ресурсов. Возможно ли это или нет?
5. Как видно из моего ответа, вам необходимо войти в систему по первому URL-адресу, чтобы получить код. Затем получите токен доступа с помощью этого кода. Если вы хотите войти в систему и получить токен доступа всего за один шаг, вы можете просто использовать неявный поток предоставления . Я добавлю это в свой ответ.