【发布时间】:2021-07-09 21:54:31
【问题描述】:
我正在将 spring security Saml 2.0 与 Spring Boot 一起用于 SSO(单点登录),并将 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”中实现的
【问题讨论】:
标签: spring spring-boot spring-security spring-saml spring-security-saml2