【发布时间】:2020-02-22 10:30:04
【问题描述】:
我尝试使用 Spring Boot 配置 keycloak,并且我想使用自定义 Keycloak 登录页面来获取访问令牌。然后我想将此令牌传递给我的微服务中的其余端点。我的 Spring 应用程序在端口 8081 上运行。我在 keycloak 管理控制台中将有效重定向设置为 http://localhost:8081/*。现在在登录 jsessionid 后重定向期间添加到 url(它看起来像这样http://localhost:8081/;jsessionid=session_id),我得到了异常:
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"
从 Spring 安全配置 sessionCreationPolicy(SessionCreationPolicy.STATELESS) 中删除后,它被重定向到有效的 url,但 KEYCLOAK_IDENTITY 和 KEYCLOAK_SESSION 未在浏览器存储中设置。我想知道为什么它会这样工作以及配置它的正确方法是什么?
我的 Spring 安全配置的一部分:
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.
csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.sessionAuthenticationStrategy(sessionAuthenticationStrategy())
.and()
.authorizeRequests()
.anyRequest()
.fullyAuthenticated();
}
【问题讨论】:
标签: java spring spring-boot spring-security keycloak