我们要求拥有多个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检索它。响应。
非常感谢任何帮助。
谢谢, 希瓦