在<saml:AuthnRequest>中,AssertionConsumerServiceURL、Destination和Consent之间的区别 (注:这是一个问题标题,不需要回答。)

11
我一直在尝试使用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/" >

在这个目的地中,Consent、AssertionConsumerServiceURL和三者都代表相同的地址。 它们实际上代表什么?

[Q.1]它们之间有区别吗? 肯定有一些区别,否则它们不会有这三个东西。

或者如果没有区别,它们代表什么?

编辑1: AssertionConsumerServiceURL是IdP的登陆页面,在此页面上期望从IdP收到断言响应消息。

2个回答

13

目的地 (定义在 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互斥,因此您不应同时使用两者。


7
SAML规范定义了三个角色:主体(通常是用户)、身份提供者(IdP)和服务提供者(SP)。wiki 服务提供者向身份提供者请求(SAML请求)并获取身份声明(SAML响应)。
因此,AssertionConsumerServiceURL位于服务提供者(SP)端。在此URL上,身份提供者(IdP)将发送包含声明的SAML响应,而服务提供者(SP)应具备读取它的设施。
据我理解,绑定表示SAML XML协议消息在SP和IdP之间如何传输(到标准消息格式)。有不止一种方法。例如:
- HTTP POST, - HTTP Redirect, - SAML SOAP绑定(基于SOAP 1.1)
因此,SP可能具有多个绑定URL地址,即:
- Assertion Consumer Service POST Binding URL - Assertion Consumer Service Redirect Binding URL

对于移动应用程序,AssertionConsumerServiceURL可能是什么,因为它不像托管的Web应用程序。 - Parth Doshi
对于移动应用程序,您仍需要一个服务器端组件来接收IdP的响应。请参见https://dev59.com/mmAg5IYBdhLWcg3waKV2 - Christian Davén

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接