SAML:如何构造AssertionConsumerService地址

时间:2017-06-28 16:35:15

标签: saml saml-2.0 spring-saml

我正在使用Spring SAML库。

当我生成SP的元数据时,有时服务器的IP地址用于AssertionConsumerService。

离。我得到这样的东西:

<md:AssertionConsumerService Binding="bindings:HTTP-POST" Location="http://12.34.56.78:8000/saml/SSO"/>

但有时使用同一服务器的DNS地址而不是12.34.56.78。

我的问题是:如何生成AssertionConsumerService地址?

1 个答案:

答案 0 :(得分:1)

真的,AssertionConsumerService只是URI,就像这样:

  

方案:[// [用户[:密码] @]主机[:端口]] [?查询] [/路径] [#片段]

DNS只是IP的别名,因此只要端点可用于SAML通信,IP或DNS都可以正常工作。

需要注意的另一件事是,由于SAML通信需要安全通道,因此应使用https代替http进行生产。

有些XSD reference

<element name="AssertionConsumerService" type="md:IndexedEndpointType"/>

<complexType name="IndexedEndpointType">
    <complexContent>
        <extension base="md:EndpointType">
            <attribute name="index" type="unsignedShort" use="required"/>
            <attribute name="isDefault" type="boolean" use="optional"/>
        </extension>
    </complexContent>
</complexType>

<complexType name="EndpointType">
    <sequence>
        <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="Binding" type="anyURI" use="required"/>
    <attribute name="Location" type="anyURI" use="required"/>
    <attribute name="ResponseLocation" type="anyURI" use="optional"/>
    <anyAttribute namespace="##other" processContents="lax"/>
</complexType>