首页 > 解决方案 > OpenId Connect 身份提供者发起的反向通道注销不起作用

问题描述

我正在开发一个在内部管理用户和会话的 java Spring Boot项目。它依赖于 OIDC,AWS Cognito 作为身份提供者,用于登录,并且我希望用户退出。我从OIDC Spec for backchannel logout中了解到的是:

  1. 我必须在我的后端应用程序中提供一个用于注销的端点。我在 java Spring Boot 应用程序中使用Pac4J作为我的 OIDC 库,并根据Pac4J Spring Security 文档logout启用了端点

  2. 如果用户从身份提供者注销,则身份提供者AWS Cognito应向注销端点发送请求

  3. 当我在此端点上收到有效呼叫(根据 OIDC 规范)时,我必须销毁用户与我的应用程序的会话。

但是,从身份提供程序 (AWS Cognito) 注销的用户似乎不会导致调用我的应用程序的注销端点。

我无法在 AWS Cognito 文档中找到有关此反向通道行为的文档。

  1. 我是否正确理解了反向通道注销?
  2. 由于 OIDC 注销仍处于草稿状态(截至2019 年 3 月 12 日),这目前是否不受支持?

标签: spring-securityamazon-cognitologoutopenid-connectpac4j

解决方案


我联系了 Pac4J 的主要开发人员,他非常及时地回复。

AWS 认知:

  • 目前似乎不支持反向通道注销

PAC4J:

  • OIDC 的库目前不支持反向通道注销,它也不在路线图上:https ://groups.google.com/forum/?fromgroups#!topic/pac4j-users/SD_IgKVZWvM , /logout 引用在文档中用于内部(应用程序)注销 +(如果已配置)将注销请求转发给身份提供者。它不是 OIDC-backchannel-logout 端点。

推荐阅读