Как использовать или получить доступ к Azure AD exposed API (MyApis)?

#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-адресу, чтобы получить код. Затем получите токен доступа с помощью этого кода. Если вы хотите войти в систему и получить токен доступа всего за один шаг, вы можете просто использовать неявный поток предоставления . Я добавлю это в свой ответ.