Alexa 应用不遵循 ASP.NET Core Identity 发出的 302 重定向

Alexa App not following 302 redirects issued by ASP.NET Core Identity

我正在研究支持帐户链接的 Alexa 技能,并在 IIS 的 Microsoft Azure AppService 网站中使用 ASP.NET Core 和 ASP.NET Core Identity 托管用于链接帐户的基础设施。

我已经通过 Microsoft.AspNetCore.Authentication.* NuGet 包实现了使用 Amazon、Facebook、GitHub、Google、Microsoft 和 Twitter 登录的功能。这些都非常适合在 Web 浏览器中进行标准登录,也可以通过浏览器手动测试帐户链接过程。

但是,当使用 iOS Alexa 应用程序时,只有 Amazon 和 Facebook 可以使用。 Google 无法正常工作,因为不允许从嵌入式应用程序使用它(我收到一个 Google 403 页面告诉我这一点),但对于其他三个,我不知道发生了什么事情会停止工作。在 iOS Safari 中一切正常,所以它似乎对 iPhone 或 iPad 没有任何影响,我已经测试过它可以正常工作。

GitHub,微软和推特在提交登录表单时都出现挂起。

我使用 CSP,所以我认为 form-action 列表可能不正确(例如,有时亚马逊会重定向到 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. Google - 工作正常;
  5. Microsoft - 重定向加载 Chrome,中断应用内流程;
  6. Twitter - 重定向加载 Chrome,打破了应用内流程。

唯一的共同点是 Facebook 和 Google 适用于这两个应用程序(尽管 Google 不允许在 iOS 上使用它)。

我是什么人 doing/missing 导致 Alexa 应用程序无法正确遵循这些重定向?什么会导致 iOS 应用程序不遵循重定向?什么会导致 Android 应用程序在 Chrome 而不是应用程序内浏览器中打开重定向?

事实证明,Alexa 应用似乎(看似随机)决定在帐户链接过程中是否遵循重定向 URL。

如果您在开发人员门户的技能配置中的可选授权 URL 列表中列出帐户链接期间可能使用的主机,事情将按预期进行。

在亚马逊开发者论坛上找到这条评论后确定:https://forums.developer.amazon.com/answers/27564/view.html