我一直在尝试使用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的断言响应消息。
答案 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种方式。例如
因此SP可能有多个绑定URL地址,即