在 spring security saml2Login 中对多个身份提供者使用单个 loginProcessingUrl

问题描述 投票:0回答:1

我试图让用户使用 spring-security 5.7.x 在我们的应用程序中动态设置 SAML 身份提供商。使用 HttpSecurity 实例配置 saml2 时,可以提供一个

loginProcessingUrl
,默认情况下必须包含
registrationId
路径变量,例如
/saml2/sso/{registrationId}

然后,

Saml2AuthenticationTokenConverter
将使用请求中的
registrationId
参数,并通过
RelyingPartyRegistration
检索
RelyingPartyRegistrationRepository

我想要一个静态的 loginProcessingUrl,而不在 URL 中包含身份提供者的

registrationId

我的问题是:当我触发 SAML 身份验证请求时,我是否可以以某种方式将

registrationId
添加到 SAML 请求中,以便由 IDP 的 SamlResponse 返回,以便我可以根据内容解析 RelyingPartyRegistration SamlResponse,不是包含响应的请求 URI?

我知道这原则上是有效的(与 spring-security 无关),因为这就是 AWS cognito SAML 集成的工作原理 - 您可以在其中注册多个身份提供商,它们都具有相同的redirectUrl,但您必须提供唯一的

 providerName
每个配置的 IDP 的字符串 - 所以我假设 cognito 以某种方式将该标识符传递给 IDP,并且它将在响应中返回它。

spring-security saml
1个回答
0
投票

在 spring 6.2 中,您可以删除 {registrationId} 部分并使其对所有 IDP 通用。请点击以下网址:

https://docs.spring.io/spring-security/reference/servlet/saml2/login/authentication.html#saml2-response-processing-endpoint

© www.soinside.com 2019 - 2024. All rights reserved.