gpt4 book ai didi

java - Keycloak和Spring Boot : session creation policy

转载 作者:行者123 更新时间:2023-12-01 22:25:17 24 4
gpt4 key购买 nike

我尝试使用 Spring Boot 配置 keycloak amd 我想使用自定义 Keycloak 登录页面来获取访问 token 。然后我想将此 token 传递给我的微服务中的其余端点。我的 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_IDENTITYKEYCLOAK_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();
}

最佳答案

如果您使用 Keycloak 示例 Spring Boot 应用程序 app-authz-springboot并在本地主机上与 keycloak 服务器一起运行它 - 你会发现,事实上,它在 IDM 的身份验证阶段使用了 cookie KEYCLOAK_IDENTITYKEYCLOAK_SESSION 。您的应用程序不需要这些 cookie,但由于所有内容都在您的本地主机上运行,​​您将在“localhost”域下看到它们。登录后,您可以安全地从存储中删除它们,并注意到您的应用程序运行顺利。

对于实际部署,您的 IDM 和应用程序将位于不同的域中,并且您将看不到这些 cookie。您的申请不需要它们。事实上,您唯一需要的是 JSESSIONID。

关于java - Keycloak和Spring Boot : session creation policy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58569215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com