gpt4 book ai didi

spring - 无法更改 Spring 安全 SAML SSO 中的默认 "reply Url"(断言消费者服务位置)

转载 作者:行者123 更新时间:2023-12-05 04:50:58 24 4
gpt4 key购买 nike

我正在使用 spring security Saml 2.0带有用于 SSO(单点登录)的 spring boot,以 azure 作为身份提供者。

Spring security 使用“{baseUrl}/login/saml2/sso/{registrationId}”作为默认的“Reply Url”,

但我想使用“{baseUrl}/login/{registrationId}”

所以跟随Official documentation我写了

RelyingPartyRegistration relyingPartyRegistration = RelyingPartyRegistrations
.fromMetadataLocation("https://login.microsoftonline.com/<metadata url>")
.registrationId("azure")
.entityId("{baseUrl}")
.assertionConsumerServiceLocation("{baseUrl}/login/{registrationId}")
.build();

通过这个我进入了登录页面,但是之后有无限循环的登录...

Spring boot 无法 POST 到/login/azure

o.s.security.web.FilterChainProxy        : Securing POST /login/azure
s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
o.s.security.web.csrf.CsrfFilter : Invalid CSRF token found for http://localhost:8080/login/azure
o.s.s.w.access.AccessDeniedHandlerImpl : Responding with 403 status code

我已尝试允许此端点的 CSRF 并允许所有访问,但它无法解析元数据。

我发现它是在过滤器“Saml2WebSsoAuthenticationFilter”中实现的

最佳答案

查看源代码我找到了解决方案。

事实证明你必须在 2 个地方更新“回复 URL”链接

  1. RelyingPartyRegistrationapplication.properties 中,就像我在问题中所做的那样。

这将告诉 Spring 成功登录后页面将重定向到哪里,在此 URL 上 IP(身份提供者)将以 XML 格式提供 SAML 响应。

  1. WebSecurityConfigurerAdapter

所以我们必须显式地告诉 Spring 期望 SAML 响应这个 URL 并解析它。

@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {

http
.authorizeRequests(authorize -> authorize
.anyRequest().authenticated()
)
.saml2Login(h -> h.loginProcessingUrl("/login/{registrationId}"));
}
}

这将更新 Saml2WebSsoAuthenticationFilter 以使用 /login/{registrationId} 进行 SAML 解析,而不是 /login/saml2/sso/{registrationId}

关于spring - 无法更改 Spring 安全 SAML SSO 中的默认 "reply Url"(断言消费者服务位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67098679/

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