我正在使用SAML v2身份验证请求协议(3.4)评估一种方案,其中 presenter 和 requested subject 是不同的,也就是说,演示者正在向身份提供商以获取关于另一个主题的断言。
我的问题是:响应这样的请求需要什么断言,以及关于哪些主题?
在这种情况下,<AuthnRequest>
使用<saml:Subject>
元素标识主题。认证请求的<Response>
包含断言。从第3.4节开始,“此类断言可以包含任何类型的附加语句,但是至少一个断言必须包含至少一个身份验证语句。”
在“ 3.4.1.4处理规则”下,我确定了成功响应的以下规则:
<AuthnRequest>
消息回复<Response>
,该消息包含一个或多个符合请求所定义规范的断言(第2229行)<saml:Subject>
元素,则生成的断言<saml:Subject>
必须与请求<saml:Subject>
强烈匹配,如第3.3.4节所述<AuthnRequest>
中专门定义的所有内容都是可选的,尽管某些配置文件可能需要某些内容。如果根本没有任何特定的内容,则意味着存在以下行为:
<saml:Subject>
元素。在我看来,这些规则要求每个响应断言中的<saml:Subject>
必须等于所请求的主题和演示者。
我正在使用“用于OASIS安全的断言和协议 断言标记语言(SAML)V2.0”(saml-core-2.0-os)供我参考。
答案 0 :(得分:0)
短语“ [i] n根本不存在任何特定内容”对于理解此处的标准至关重要。由于在请求中包含<saml:Subject>
意味着请求确实具有的内容,因此我问题中的最后一个要点不适用。
但是,第3.4节的第一部分仍然说:
这样的断言可以包含任何类型的附加语句,但是至少一个断言必须包含至少一个认证语句。
然后,根据处理规则,这些声明的主题必须是请求的主题。
必需的身份验证语句必须引用此主题(可以说从未经过身份验证)。如果这对应于<AuthnStatement>
元素,则该元素需要:
AuthnInstant
属性<saml:AuthnContext>
。然后可以将其留给<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>