Cognito 注销流程未从浏览器中清除 ADFS 的 cookie

Posted

技术标签:

【中文标题】Cognito 注销流程未从浏览器中清除 ADFS 的 cookie【英文标题】:Cognito Signout flow not clearing cookies of ADFS from browser 【发布时间】:2019-03-18 09:51:35 【问题描述】:

我目前正致力于将使用 Cognito 的应用程序与使用 SAML 的外部 IdP (ADFS) 集成。我为我的用户池完成了以下步骤

1)我通过导入我的 ADFS 服务器的元数据创建了一个 SAML 身份提供程序并启用了注销流程复选框。

2) 在我的用户池的 ADFS 服务器中添加了信赖方信任。将 singin 端点配置为 https://.auth..amazoncognito.com/saml2/idpresponse 并将注销端点配置为 https://.auth..amazoncognito.com/saml2/logout。

3) 将签名证书从 cognito 导入依赖方信任签名部分。

当我登录时,它会询问我的 Active Directory 的用户名和密码。但是在注销期间,请求将发送到 /saml/logout 端点,我得到了成功的响应。 Cognito cookie 正在从浏览器中清除。但我的 ADFS cookie 仍保留在浏览器中。下次当我记录它时,我的 ADFS 凭据将从浏览器中获取。即使启用了注销流,Cognito 注销流也无法清除联合 IDP 的 cookie。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

虽然这不是您问题的答案,但我想知道您是如何使用 SAML Idp 对用户进行身份验证的?

我已设置 SAML Idp 并在我的应用客户端中启用它。

我正在尝试使用具有 2 个用于用户名和密码的文本字段以及一个登录按钮的 android 应用程序登录。

我得到 UserNotFoundException。我遵循了亚马逊的文档,但找不到克服它的方法。我很困惑。

有趣的是,当我使用 Cognito 使用以下格式访问的自动生成的 UI 登录时,一切正常。

Cognito Auto Generated UI

【讨论】:

当您为某个 IDP 设置联盟时,将打开 IDP 登录页面,用户可以在其中提供他的详细信息以进行身份​​验证。如果用户在任何其他页面中输入用户名和密码,例如您使用用户名和密码设计的页面,那么联合访问的想法就会失败。您必须在新窗口中打开 IDP 登录页面,并且一旦通过身份验证,您必须使用诸如 window.opener.postMessage('jwt','domainname') 之类的脚本将获得的 JWT 回发到您的页面。希望这可以帮助。干杯。

以上是关于Cognito 注销流程未从浏览器中清除 ADFS 的 cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何用passport-saml修复SLO,它在第一次注销时有效,但在以后的注销中不起作用

如何使用 Amazon Cognito 注销终端节点?

带有 ADFS 的 AWS Cognito:颁发者与 providerName 不匹配

ADFS3.0/4.0 访问登录页跳转到注销界面后再跳转回登录页的方法

ADFS 2.0 Web 应用注销

如何使用适用于AWS Cognito的AD FS SAML?