首页 > 解决方案 > 如何在 onelogin 中启用单点注销

问题描述

我有一个使用 oauth2 spring boot 应用程序进行身份验证的 spring boot 应用程序。我能够在 Oauth2 应用程序中启用 SAML 并将其指向 ONELOGIN 开发人员门户并成功进行身份验证。但是,当我从应用程序中注销时,它实际上并没有将我从 ONELOGIN 中注销。当我触发应用程序注销时,它会重定向到 ONELOGIN 登录页面,然后我会重新登录到应用程序。

我想在这里实现单点注销,我只想让我的应用程序从 ONELOGIN 中注销。

标签: saml-2.0spring-samlonelogin

解决方案


您需要定义一个 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 提供程序以及客户端应用程序。


推荐阅读