Приложение Alexa не следует 302 перенаправлениям, выданным ASP.NET Core Identity

Я работаю над навыком Alexa, который поддерживает связывание учетных записей, и размещаю инфраструктуру для связывания учетных записей с использованием ASP.NET Core с ASP.NET Core Identity на веб-сайте Microsoft Azure AppService в IIS.

Я реализовал возможность входа с помощью Amazon, Facebook, GitHub, Google, Microsoft и Twitter через Microsoft.AspNetCore.Authentication.* пакеты NuGet. Все они отлично работают для стандартного входа в систему в веб-браузере, а также для ручного тестирования процесса привязки учетной записи через браузер.

Однако при использовании приложения iOS Alexa работают только Amazon и Facebook. Google не работает, потому что его использование из встроенных приложений запрещено (я получил страницу Google 403, сообщающую мне об этом), но для трех других я понятия не имею, что происходит, чтобы что-то перестало работать. В iOS Safari все работает нормально, поэтому для iPhone или iPad, где я тестировал, не было ничего глобального.

GitHub, Microsoft и Twitter зависают при отправке формы входа.

Я использую CSP, поэтому я подумал, что, возможно, список form-action был неправильным (например, иногда Amazon перенаправлялся на na.account.amazon.com, что сначала приводило к сбою, поскольку я думал, что будет использоваться только account.amazon.com), но проблемы сохранялись, когда список CSP был обновлено, чтобы временно разрешить что-либо исключить CSP. Кроме того, я использую report-uri.io с CSP, который не получил ошибок.

Я запустил свой iPhone и iPad через Fiddler в качестве прокси и обнаружил, что встроенная страница правильно отправляет HTTP POST на мой сайт, который отвечает во всех 6 случаях правильным ответом HTTP 302. В случае Amazon и Facebook следуют 302, и все работает, как ожидалось. Для остальных трех с проблемой, похоже, это конец запросов от приложения Alexa.

Кажется, что встроенный браузер полностью игнорирует HTTP 302, оставляя пользователя в подвешенном состоянии при попытке войти в систему.

Я также пробовал приложение Android Alexa, которое демонстрирует другое поведение:

  1. Amazon - редирект загружает Chrome, нарушая поток внутри приложения;
  2. Facebook - работает корректно;
  3. GitHub - перенаправление загружает Chrome, нарушая поток внутри приложения;
  4. Гугл - работает корректно;
  5. Microsoft - редирект загружает Chrome, нарушая поток внутри приложения;
  6. Twitter - перенаправление загружает Chrome, нарушая поток внутри приложения.

Единственным общим знаменателем является то, что Facebook и Google работают для обоих приложений (хотя Google запрещает их использование на iOS).

Что я мог делать / упускать из-за того, что приложения Alexa не следовали этим перенаправлениям правильно? Что может привести к тому, что приложение iOS не будет следовать перенаправлениям? Что заставит приложение Android открывать перенаправления в Chrome, а не во встроенном браузере?


person Martin Costello    schedule 18.03.2017    source источник


Ответы (1)


Таким образом, оказывается, что приложение Alexa (по-видимому, случайно) решает следовать или не следовать URL-адресам перенаправления во время процесса связывания учетной записи.

Если вы перечислите возможные хосты, которые используются во время связывания учетной записи, в необязательном списке URL-адресов авторизации в конфигурации навыков на портале разработчика, все будет работать должным образом.

Определено после нахождения этого комментария на форуме разработчиков Amazon: https://forums.developer.amazon.com/answers/27564/view.html

person Martin Costello    schedule 19.03.2017