我想为使用 Amazon Cognito 用户池的应用程序配置 SAML 单点注销。我的应用程序还使用 SAML 身份提供者 (IdP) 进行身份验证。
解决方法
先决条件:
在 SAML IdP 中启用 SAML 注销
完成以下步骤:
- Amazon Cognito 控制台。
- 在导航窗格中,选择 User pools(用户池),然后选择您的用户池。
- 选择 Social and external providers(社交和外部提供商),然后选择您的 SAML IdP。
- 在您的 SAML IdP 配置设置中,选择 Add sign-out flow(添加注销流程)和 Sign SAML requests to this provider(向该提供商签署 SAML 请求)。然后,保存配置。
- 选择 View signing certificate(查看签名证书)。
- 选择 Download as .crt(以 .crt 格式下载)。
- 选择 Close(关闭)。
配置您的外部 IdP 以启用注销
要在 Cognito 应用程序中配置单点注销,请参阅 IdP 的文档,以便在 SAML 应用程序中启用单点注销。
配置应用程序时,请完成以下步骤:
- 将您的 Cognito 用户池中的 .crt 文件作为签名证书上传到您的 IdP 的 SAML 应用程序配置中。
- 在 IdP 的配置中启用单点注销。
**注意:**您的 IdP 可能会将单点注销称为单点登出 (SLO)。
- 对于 IdP 配置,请使用以下值:
对于 single sign-out URL(单点注销 URL),输入 https://YourDomain.auth.Region.amazoncognito.com/saml2/logout。
对于 service provider (SP) issuer(服务提供商 (SP) 发布者),输入 urn:amazon:cognito:sp:YourUserPoolID。
**注意:**将 YourDomain、Region 和 YourUserPoolID 替换为您的值。您的 IdP 必须将 SAML LogoutResponse 作为 HTTP POST 请求发送。然后,Cognito 将用户重定向到初始请求中的注销 URL。
测试单点注销
向 Cognito/登出端点发出 GET 请求。确保在请求中包含 client_id 和 logout_uri 参数。
登出 URL 示例:
https://YourDomain.auth.Region.amazoncognito.com/logout?client_id=YourAppClientID&logout_uri=YourAllowedSignOutURL
**注意:**对于自定义应用程序,必须从用户的浏览器中删除本地存储的令牌或会话信息,例如 localStorage 和 sessionStorage。Cognito 登出 URL 仅为使用托管用户界面的应用程序清除 Cognito Cookie。
相关信息
通过单点注销来注销 SAML 用户