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 之间传输(到标准消息格式)的方式。有不止一种方式。例如
因此 SP 可能有多个绑定 URL 地址,即
目的地(在saml 2核心行1477-1482中定义)
目标是您要将消息发送到的端点的URL.通常,SAML对等体具有用于不同绑定的不同端点,并且在IDP处使用该值来验证所接收的消息实际上是针对接收它的地方.它有助于缓解某些攻击情形.
同意(在saml 2核心行1483-1488中定义)
价值只是对IDP的建议,告知发件人如何获得委托人(通常是用户)代表她发出此SAML消息的许可.它是可选的,通常是未使用的.
AssertionConsumerServiceURL(在saml 2核心行2061-2067中定义)
标识您身边的URL,其中对等IDP必须向其发送响应.使用此属性时,还应指定ProtocolBinding.该值与assertionConsumerServiceIndex互斥,因此您不应同时使用它们.