4

複数の IDP メタデータ構成を持つことは可能ですか? 設定方法を教えてください。私の環境では、2 つの異なる ADFS サーバーがあり、両方に独自の Metadata.xml ファイルがあります。

securityContext.xml ファイルには、ADFS サーバーの IDP 選択用に次の構成があります。

<bean id="metadata"
class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
<constructor-arg>
<value type="java.lang.String">https://<adfs_server1>/FederationMetadata/2007-06/FederationMetadata.xml</value>
</constructor-arg>
<constructor-arg>
<value type="int">50000</value>
</constructor-arg>
<property name="parserPool" ref="parserPool" />
</bean>
</list>
</constructor-arg>
</bean>

次のような 2 つの異なる ADFS サーバーに対して、上記と同じ別のエントリを追加することは可能ですか。

<bean id="metadata"
class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
<constructor-arg>
<value type="java.lang.String">https://<adfs_server1>/FederationMetadata/2007-06/FederationMetadata.xml</value>
</constructor-arg>
<constructor-arg>
<value type="int">50000</value>
</constructor-arg>
<property name="parserPool" ref="parserPool" />
</bean>
</list>
</constructor-arg>
</bean>
<bean id="metadata1"
class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
<constructor-arg>
<value type="java.lang.String">https://<adfs_server2>/FederationMetadata/2007-06/FederationMetadata.xml</value>
</constructor-arg>
<constructor-arg>
<value type="int">50000</value>
</constructor-arg>
<property name="parserPool" ref="parserPool" />
</bean>
</list>
</constructor-arg>
</bean>

助けてください。

4

1 に答える 1

4

はい、必要な数の IDP を含めることができます。ただし、複数のCachingMetadataManagerBean を追加するのではなく、MetadataProviders単一の .xml 内に複数を含める必要がありますMetadataManager。構成は次のようになります。

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
    <constructor-arg>
        <list>
            <bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
                <constructor-arg>
                    <value type="java.lang.String">https://<adfs_server1>/FederationMetadata/2007-06/FederationMetadata.xml</value>
                </constructor-arg>
                <constructor-arg>
                    <value type="int">50000</value>
                </constructor-arg>
                <property name="parserPool" ref="parserPool"/>
            </bean>
            <bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
                <constructor-arg>
                    <value type="java.lang.String">https://<adfs_server2>/FederationMetadata/2007-06/FederationMetadata.xml</value>
                </constructor-arg>
                <constructor-arg>
                    <value type="int">50000</value>
                </constructor-arg>
                <property name="parserPool" ref="parserPool"/>
            </bean>
        </list>
    </constructor-arg>
</bean>

ユーザーが認証を希望するときにどの IDP を使用するかを決定するメカニズムを提供する必要があります。これは、エンドポイントの呼び出し時に選択した IDP のidp値でGET パラメーターを指定するか、IDP ディスカバリーを実装することによって行うことができます。entityId/saml/login

于 2014-09-23T12:35:53.237 に答える