Код авторизации OAuth v2, возвращенный в HTTP-заголовке Location

#api #oauth-2.0 #microsoft-graph-api #dynamics-365

#API #oauth-2.0 #microsoft-graph-api #динамика-365

Вопрос:

Я использую OAuth для получения токена доступа из Microsoft Graph. Я специально использую тип предоставления кода авторизации. Первым шагом является запрос кода через HTTP GET. Затем код используется во втором вызове HTTP POST API вместе с client_id и client_secret .

Что меня смущает, так это то, как доставляется код авторизации. Он возвращается как часть HTTP-заголовков с именем Location .

Заголовок HTTP-ответа

Ожидается ли это? Я искал его в теле ответа, аналогичном тому, как access_token возвращается an . Ожидается ли возврат кода через Location заголовок?

Ответ №1:

ПОТОК КОДА АВТОРИЗАЦИИ

Этот поток является стандартным для клиентов браузера, поэтому поведение выглядит корректным:

  • Браузер получает код авторизации как часть перенаправления, где существуют риски для безопасности, такие как код, включаемый в журналы или видимый пользователю, или, возможно, перехваченный злоумышленником.
  • Затем логика пользовательского интерфейса выполняет прямой вызов HTTPS для замены кода на токены. Использование двух этапов для получения токенов OAuth снижает уровень угроз для клиентов браузера.

ТЕСТИРОВАНИЕ ПОТОКА КОДА

Поток кода сложно протестировать в таких инструментах, как Postman. Взгляните на инструменты OAuth как на лучшую альтернативу — смотрите также это видео.

Вот некоторые мои значения, которые вы можете использовать в качестве первого шага:

  • Выберите Добавить среду и введите базовый URL-адрес Azure AD, который для моей учетной записи разработчика имеет это значение в качестве отправителя, затем нажмите «Обнаружить», чтобы заполнить другие конечные точки:
    https://login.microsoftonline.com/7f071fbc-8bf2-4e61-bb48-dabd8e2f5b5a/v2.0
  • Затем запустите поток кода с идентификатором клиента, таким как этот мой: c5ea6d78-c637-4f7f-b238-2264f5d4b479
  • Затем, как только настройки будут выглядеть как на скриншоте ниже, запустите перенаправление входа в систему:

Настройки потока кода

Затем вы можете обновить свои собственные настройки и проделать то же самое с тестовым пользователем. Затем прокрутите вниз и выберите опцию «Активировать код» и используйте опцию client_secret_post для замены кода на токены. Затем просмотрите сведения о JWT и т. Д.

Одна из проблем заключается в том, что мой клиент Azure AD представляет собой одностраничное приложение, и Azure AD требует, чтобы этот заголовок добавлялся в запрос curl на этапе активации. Не уверен, что вы столкнетесь с этой проблемой, и я посмотрю, смогу ли я обновить инструмент, чтобы разрешить ввод дополнительных заголовков и т. Д.

  • -H ‘Происхождение: https://web.mycompany.com ‘

Комментарии:

1. Спасибо за помощь. Я намереваюсь использовать браузер для запроса кода аутентификации, а затем после получения кода аутентификации затем сделать второе СООБЩЕНИЕ, используя код аутентификации для запроса токена. Я просто делаю это в клиенте Postman, чтобы подтвердить, что у меня процесс работает правильно, прежде чем кодировать его. Это помогает?

2. Да — все выглядит правильно, тогда мистер веб-червь — я отредактировал свой ответ — также посмотрите на тестовый вариант выше