Google Workspace + AWS Cognito |使用 SAML 集成单点注销

问题描述 投票:0回答:1

我正在致力于将 AWS Cognito 与我的前端 Web 应用程序集成,使用 Google Workspace 作为 SAML Idp。我正在使用带有 PKCE 的身份验证代码流程,并且我能够成功身份验证并检索我的 id + 访问 + 刷新令牌。

我遇到的问题是,当我到达

<user-pool-domain>/logout
端点(使用
client_id
logout_uri
)时,注销流程似乎成功并重定向到我的注销回调。但是,如果我随后尝试再次登录,它会绕过 Google Workspace 并立即成功进行身份验证。因此,无论出于何种原因,注销流程都无法正确结束用户与 Google Workspace 的会话...

如果我尝试

<user-pool-domain>/saml2/logout
(再次传入
client_id
logout_uri
作为 url 参数),那么我会得到一个错误页面,仅显示“请求的页面遇到错误”

我已在 Cognito 中的 Idp 配置下启用了

Signout flow

我是否缺少额外的配置?有什么想法如何调试这个吗?

authentication amazon-cognito google-workspace
1个回答
0
投票

花了周末的时间研究这个问题后,我找到了一个可以接受的解决方案:

  1. 当用户想要注销时,首先通过
    /oauth2/revoke
    向 AWS Cognito 发送请求以撤销用户的令牌(请参阅 https://docs.aws.amazon.com/cognito/latest/developerguide/replication-endpoint.html
  2. 接下来将用户重定向到 AWS Cognito 的注销端点
    /logout
    (请参阅 https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html

虽然这不会使用户退出 Google(因为 Google 不支持 SAML2 单点注销流程...),但它会正确结束 AWS Cognito 与 Google 的会话,这样如果您注销 Google,然后尝试再次登录通过重定向到 AWS Cognito

/login
端点,用户将被迫通过 Google 重新进行身份验证!

为什么 AWS Cognito 在调用标准

/logout
端点时还没有撤销用户的令牌,我不知道...似乎是 AWS 方面的错误...如果这是预期的行为,则可能应该在某处记录。

© www.soinside.com 2019 - 2024. All rights reserved.