AssertionConsumerServiceURL,Destination,Consent in <saml:AuthnRequest>之间的区别

mav*_*vis 5 java opensaml saml-2.0

我一直在尝试使用opensaml-java生成SAML对象.

参考:幻灯片#30在https://www.oasis-open.org/committees/download.php/12958/SAMLV2.0-basics.pdf

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                        ForceAuthn="true"
                        AssertionConsumerServiceURL="http://www.example.com/"
                        AttributeConsumingServiceIndex="0" ProviderName="string"
                        ID="abe567de6"
                        Version="2.0"
                        IssueInstant="2005-01-31T12:00:00Z"
                        Destination="http://www.example.com/"
                        Consent="http://www.example.com/" >
Run Code Online (Sandbox Code Playgroud)

在此Destination,Consent,AssertionConsumerServiceURL中,所有三个代表相同的地址. 他们实际代表什么?

[问题1] 它们之间有什么区别吗? 当然必须有一些区别,否则他们就不会有这三件事.

或者如果没有差异,他们代表什么?

编辑1:AssertionConsumerServiceURL是IdP的登陆页面,其中预期来自IdP的断言响应消息.

小智 6

SAML 规范定义了三个角色:主体(通常是用户)、身份提供者 (IdP) 和服务提供者 (SP)。 维基

服务提供者请求(SAML Request)并从身份提供者处获得身份断言(SAML Response)

所以AssertionConsumerServiceURL位于服务提供商 (SP) 端。在这个 URL 上,身份提供者 (IdP) 将发送包含断言的 SAML 响应,服务提供者 (SP) 应该拥有读取它的设施。

根据我的理解,绑定表示 SAML XML 协议消息将在 SP 和 IdP 之间传输(到标准消息格式)的方式。有不止一种方式。例如

  • HTTP POST,
  • HTTP 重定向
  • SAML SOAP 绑定(基于 SOAP 1.1)

因此 SP 可能有多个绑定 URL 地址,即

  • 断言消费者服务 POST 绑定 URL
  • 断言消费者服务重定向绑定 URL


Vla*_*fer 5

目的地(在saml 2核心行1477-1482中定义)

目标是您要将消息发送到的端点的URL.通常,SAML对等体具有用于不同绑定的不同端点,并且在IDP处使用该值来验证所接收的消息实际上是针对接收它的地方.它有助于缓解某些攻击情形.

同意(在saml 2核心行1483-1488中定义)

价值只是对IDP的建议,告知发件人如何获得委托人(通常是用户)代表她发出此SAML消息的许可.它是可选的,通常是未使用的.

AssertionConsumerServiceURL(在saml 2核心行2061-2067中定义)

标识您身边的URL,其中对等IDP必须向其发送响应.使用此属性时,还应指定ProtocolBinding.该值与assertionConsumerServiceIndex互斥,因此您不应同时使用它们.