AWS Cognito 联合用户登录不允许在注销后以其他用户身份登录

Adi*_*oke 4 amazon-web-services amazon-cognito

我可以注销并登录,但有 1 个特定场景我无法实现。

设想:-

  • 用户使用联合社交登录 (Google) 直接使用托管 UI 登录。
  • 现在,用户单击注销,它会将其定向到 AWS Cognito 注销 URL
https://xxxxxxx.auth.us-east-2.amazoncognito.com/logout?
response_type=token&client_id=xxxxxxxxx&logout_uri=https://abc/logout.html
Run Code Online (Sandbox Code Playgroud)

它成功注销用户并成功将用户重定向到 URL 中提到的注销页面。

  • 现在,当用户尝试通过不同的帐户再次登录时,他被迫仅使用之前的谷歌登录信息。

我希望拥有这样的功能,用户可以注销并重新登录(如果他愿意),然后他可以使用相同的帐户或不同的帐户登录,具体取决于选择。

需要注意的重要一点是我不能使用 AWS-Amplify 或任何 javascript 框架,只能使用纯 javascript。

小智 5

您总是被迫使用同一用户登录的原因似乎是 /logout? 端点仅在 Cognito 上注销用户,但 Cognito 不会通知 Google 它应该将您从设备中注销。因此,每次您重新登录并启动 Google 身份验证屏幕时,Google 仍然会记住该设备并看到您仍然处于登录状态。因此,会触发重定向 URI,而不会提示您选择新帐户。

我在 React Native 项目中遇到了同样的问题,但尚未找到任何证据表明 Cognito 提供了端点来强制它也将您从身份提供商(即 Google)中注销。

PS:这是另一个包含更多信息的 stackoverflow 讨论:AWS Cognito - How to Force select account while Login with Google

该线程中的响应之一提到直接调用 Google 的注销端点作为注销流程的一部分。它绝对不漂亮,但由于您使用的是纯 JavaScript,因此它可能是一个足够的解决方案。

如果您找到更干净的解决方案,请务必分享它,因为我很想听听您发现了什么:)