在SAML中使用自己的entityid配置多个metadata.xml

时间:2017-07-05 13:25:26

标签: saml saml-2.0 spring-saml

我们要求拥有多个metadata.xml及其实体来启用SSO,因为我们有多个国家/地区站点在同一个实例和相同的代码库中运行。

到目前为止我们做了什么

  

自定义metadatageneratorfilter以根据请求网址设置正确的实体(我们的国家/地区代码位于网址域中)。

在Spring XML中,

     <pre>
[bean id="metadata"  class="org.springframework.security.saml.metadata.CachingMetadataManager">
        [constructor-arg>
            [list>
            [bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                     [constructor-arg>
                [bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">

                    [constructor-arg>
                        [value type="java.io.File">${sso.metadata.location:classpath:security/metadata_se.xml}[/value>
                    [/constructor-arg>
                    [property name="parserPool" ref="parserPool"/>
                [/bean>
                [/constructor-arg>
                 [!-- added section starts -->
                    [constructor-arg>
                        [bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                                [property name="signingKey" value="ssoIDPCertr"/>
                        [/bean>
                    [/constructor-arg>
                    [!-- added section ends-->
                 [/bean>
                 [bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                     [constructor-arg>
                [bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">

                    [constructor-arg>
                        [value type="java.io.File">${sso.metadata.location:classpath:security/metadata_es.xml}[/value>
                    [/constructor-arg>
                    [property name="parserPool" ref="parserPool"/>
                [/bean>
                [/constructor-arg>
                 [!-- added section starts -->
                    [constructor-arg>
                        [bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                                [property name="signingKey" value="ssoIDPCertr"/>
                        [/bean>
                    [/constructor-arg>
                    [!-- added section ends-->
                 [/bean>
                 [bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                     [constructor-arg>
                [bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">

                    [constructor-arg>
                        [value type="java.io.File">${sso.metadata.location:classpath:security/metadata_de.xml}[/value>
                    [/constructor-arg>
                    [property name="parserPool" ref="parserPool"/>
                [/bean>
                [/constructor-arg>
                 [!-- added section starts -->
                    [constructor-arg>
                        [bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                                [property name="signingKey" value="ssoIDPCertr"/>
                        [/bean>
                    [/constructor-arg>
                    [!-- added section ends-->
                 [/bean>
            [/list>
        [/constructor-arg>
    [/bean>

</pre>


But this approach is not working as we dont have set providers against any unique values to identify the proper providers for countries.

our urls will be like 
<pre>
https://xy.brand.com

https://yy.brand.com
</pre>

每个站点都有单独的metadata.xml。

我们需要将metadata.xml与countryCode一起存储为标识符,并在形成SAML请求之前根据请求URL检索它。响应。

非常感谢任何帮助。

谢谢, 希瓦

1 个答案:

答案 0 :(得分:0)

使用不同的entityID是您分离SP元数据xml文件的唯一原因吗?如果是,您是否考虑过使用entity alias