使用Spring Security SAML'生成两个不同的SP元数据

时间:2014-12-05 11:57:15

标签: spring-saml

我们需要配置两个不同的IdP。到目前为止一直很好,但问题是我们需要为其中一个IdP配置forceAuthN。另一件事是,一个IdP正在使用HTTP-Artifact来绑定SAP,而另一个正在使用HTTP-POST。因此,我们似乎需要两个不同的SP元数据。

最好的方法是什么?我想如果我们自己编写元数据并不是问题,但我们希望Spring Security SAML能够生成这些元素。

我们尝试通过扩展MetadataGeneratorFilter类来配置两个不同的metadataGeneratorFilter。现在的问题是只构建了一个SP的元数据,原因只是processMetadataInitialization方法中的以下行:

if (manager.getHostedSPName() == null) { ...

据我所知,MetadataManager类只能容纳一个hostedSPName,而不是两个。

1 个答案:

答案 0 :(得分:2)

您无需单独的元数据即可控制绑定选择或forceAuthN。这些设置在发送给IDP的AuthnRequest中配置。只需确保您的SP元数据包含HTTP-Artifact和HTTP-POST端点(默认情况下都是这样)。

使用AuthnRequest的实例配置WebSSOProfileOptions设置。扩展类SAMLEntryPoint,覆盖方法getProfileOptions并返回正确配置的WebSSOProfileOptions,具体取决于您要连接的IDP以及您的要求。详细信息位于manual

使用属性forceAuthN配置AuthnRequest中的forceAuthn。您可以选择IDP使用哪种绑定(工件与帖子)将SAML消息传递回具有属性assertionConsumerIndex的SP。

您不能使用自动MetadataGenerator在一个实例中生成两组不同的元数据。为了做到这一点,您可以使用pre-configured metadata - 但我不认为您的情况需要它。