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

时间:2014-02-04 05:46:02

标签: java saml-2.0 opensaml

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

参考:https://www.oasis-open.org/committees/download.php/12958/SAMLV2.0-basics.pdf

中的幻灯片#30
<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/" >

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

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

如果没有差异,它们代表什么?

编辑1: AssertionConsumerServiceURL是IdP的登陆页面,其中需要来自IdP的断言响应消息。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

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

答案 1 :(得分:1)

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

服务提供商请求(SAML请求)并从身份提供商处获取身份断言(SAML响应)

所以 AssertionConsumerServiceURL 位于服务提供商(SP)端。在此URL处,身份提供者(IdP)将发送包含断言的SAML响应,并且服务提供者(SP)应具有读取它的工具。

根据我的理解,绑定表示SAM和XML协议消息在SP和IdP之间传输(到标准消息传递格式)的方式。有超过1种方式。例如

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

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

  • 断言消费者服务POST绑定URL
  • 断言使用者服务重定向绑定网址