Microsoft OAuth перенаправляет с кодом 302 вместо 200, что нарушает логику диплинка на мобильном устройстве.

Что я использую OAuth для аутентификации в Microsoft:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize...&redirect_uri=MYURL (я также использую аналогичный подход с Google: https://accounts.google.com/o/oauth2/v2/auth...redirect_uri=MYURL)

MYURL — это https://admin.myrealdomain.com/code (MYURL — это пустая страница с 200 одобрениями на мой сервер)

Однако Microsoft Graph возвращается с перенаправлением 302 с https://login.live.com/oauth20_authorize.srf...

и это вызывает проблемы с обработкой диплинков (страница просто не перехватывается приложением).

У меня нет подобных проблем с Google (код состояния 200). И кажется, что недавно он отлично работал и с Microsoft. Я просто не уверен, что это то, что я пропустил, или у MS есть некоторые недавние изменения, примененные к этой логике.

Кто-нибудь знает, как я могу это решить? Спасибо!


person Agat    schedule 09.05.2020    source источник
comment
Использование авторизации Microsoft действительно приведет к перенаправлению на «https://login.live.com/oauth20_authorize.srf…», но я этого не понимаю, и это вызывает проблемы с обработкой deeplinks (страница просто не перехватывается app ) 'Можете ли вы сказать больше деталей?   -  person Carl Zhao    schedule 11.05.2020
comment
Какой поток аутентификации вы используете?   -  person Carl Zhao    schedule 11.05.2020
comment
Обычно, когда ответ возвращается от поставщика аутентификации (и поскольку он работает с Google), он возвращается без дополнительного шага (я не вижу точного потока перенаправлений при попытке его в Chrome для настольных компьютеров, но он показывает просто вернуться к моему return_url, но в случае MS сначала 302 для oauth20_authorize.srf). Таким образом, когда он возвращается из Google, механика диплинкинга распознает URL-адрес и возвращает управление мобильному приложению. Но в случае с MS ничего не происходит, хотя итоговая страница return_url такая же, как и у Google в итоге.   -  person Agat    schedule 11.05.2020


Ответы (1)


Кажется, что вы выполняете поток кода OAUTH за кулисами. Это не работает таким образом.

Вы должны открыть диалоговое окно браузера, чтобы запросить код авторизации. См. ссылку здесь.

Шаги:

  1. Открывается диалоговое окно браузера с URL-адресом
    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?....
  2. После того, как Пользователь входит в систему, он перенаправляется на URL-адрес перенаправления, где был возвращен код авторизации.
  3. POST для https://login.microsoftonline.com/common/oauth2/v2.0/token?.... вы можете получить токен доступа для вызова API Microsoft Graph.
person Allen Wu    schedule 21.05.2020
comment
Не уверен, что вы имеете в виду, что это не работает таким образом, когда оно уже работает. :) Вот так уже организовано, и все нормально работает, кроме как только с майкрософтом. Гугл в порядке. - person Agat; 21.05.2020