小编der*_*bby的帖子

使用 Keycloak 的 Spring-boot 单点注销

描述

\n

我创建了一个使用 Keycloak 12.0.1 作为身份提供程序的应用程序。\n单点登录工作正常,“本地注销”也很好。

\n

问题是单点退出

\n

我在网上搜索了文档和问题,但一无所获。\n下面的日志描述了三种失败的情况。

\n

最后的问题是:

\n
    \n
  • 我究竟做错了什么?
  • \n
  • 我必须如何在我的应用程序中实现反向通道注销?
  • \n
\n

我如何理解 SSOut 应该起作用的示例:

\n
    \n
  • 用户在应用程序 A 中单击“注销”
  • \n
  • 应用程序A结束会话
  • \n
  • App A通知Keycloak
  • \n
  • Keycloak 通过反向通道注销通知 App B
  • \n
  • 应用程序 B 结束会话
  • \n
\n

安全配置

\n

keycloakCsrfRequestMatcher() 方法将库拥有的端点(如“k_logout”)从 csrf 保护中释放,但不是我自己的 url“/sso/logout”。也许可以编写我自己的匹配器,但这超出了我作为开发人员的经验。

\n
import java.util.Arrays;\nimport java.util.List;\n\nimport javax.annotation.PostConstruct;\n\nimport org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;\nimport org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;\nimport org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;\nimport org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;\nimport org.keycloak.adapters.springsecurity.filter.KeycloakSecurityContextRequestFilter;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.EnvironmentAware;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Profile;\nimport org.springframework.core.env.Environment;\nimport org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\nimport org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;\nimport org.springframework.security.core.session.SessionRegistryImpl;\nimport org.springframework.security.web.authentication.logout.LogoutFilter;\nimport org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;\nimport org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;\nimport org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter;\n\n@Profile("KC")\n@Configuration\n@EnableWebSecurity\n@ComponentScan(basePackageClasses = …
Run Code Online (Sandbox Code Playgroud)

csrf spring-boot keycloak single-logout

5
推荐指数
0
解决办法
3394
查看次数

标签 统计

csrf ×1

keycloak ×1

single-logout ×1

spring-boot ×1