saml-2.0 - 如何在 onelogin 中启用单点注销
问题描述
我有一个使用 oauth2 spring boot 应用程序进行身份验证的 spring boot 应用程序。我能够在 Oauth2 应用程序中启用 SAML 并将其指向 ONELOGIN 开发人员门户并成功进行身份验证。但是,当我从应用程序中注销时,它实际上并没有将我从 ONELOGIN 中注销。当我触发应用程序注销时,它会重定向到 ONELOGIN 登录页面,然后我会重新登录到应用程序。
我想在这里实现单点注销,我只想让我的应用程序从 ONELOGIN 中注销。
解决方案
您需要定义一个 OidcClientInitiatedLogoutSuccessHandler。这称为依赖提供者 (RP) 注销,以便更轻松地搜索结果。请注意,这通常不是您想要的,除非您的 OIDC 会话是 1 对 1 关系或其他一些情况。
OidcClientInitiatedLogoutSuccessHandler oidcLogoutSuccessHandler() {
OidcClientInitiatedLogoutSuccessHandler successHandler = new OidcClientInitiatedLogoutSuccessHandler(clientRegistrationRepository);
successHandler.setPostLogoutRedirectUri(URI.create("http://localhost:8080/"));
return successHandler;
}
然后,您需要configure
在 WebSecurityConfigurerAdapter 的覆盖方法中修改现有注销以包括:
.and().logout().logoutSuccessHandler(oidcLogoutSuccessHandler())
这将使您退出 OIDC 提供程序以及客户端应用程序。
推荐阅读
- python - 查找固定长度数字的所有可能排列以达到给定总和
- c# - 将方法上的泛型类型约束为从抽象泛型基类的任何变体形式派生的任何类
- database - 是否有文本编辑器、编辑器插件或 NLP 算法可以解连接一串单词,中间没有空格
- mysql - Amazon Aurora 是否为在从节点上运行的只读事务提供可序列化隔离?
- django - 了解 django 中的关系
- java - 使用带有基本连接脚本的 Oracle Jar (ojdbc7.jar)
- swift - 无法在 Double 中转换和使用字符串值 - Swift
- c# - 将字符串格式的python字节转换为c#中的字节数组
- php - 加载 XML 数据而不刷新
- javascript - javascript:刷新预先删除的 id 参数 URL 使页面崩溃