SAML:如何构造 AssertionConsumerService 地址
SAML: How does AssertionConsumerService address get constructed
我正在使用 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地址是如何生成的?
真的,那个AssertionConsumerService
只是一个URI,是这样的:
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
而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>
我正在使用 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地址是如何生成的?
真的,那个AssertionConsumerService
只是一个URI,是这样的:
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
而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>