我正在使用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)作为我的参考。
短语“ [i] n根本不存在任何特定内容”对于理解此处的标准至关重要。因为在请求中包含<saml:Subject>
意味着请求确实具有特定内容,所以我的问题中的最后要点不适用。
但是,第3.4节的第一部分仍然说:
此类断言可以包含任何类型的附加语句,但是至少一个断言必须包含至少一个认证语句。
然后,根据处理规则,这些声明的主题必须是请求的主题。
所需的身份验证语句必须引用此主题(可以说从未经过身份验证)。如果这对应于<AuthnStatement>
元素,则该元素需要:
AuthnInstant
属性<saml:AuthnContext>
描述身份验证上下文。然后可以将其留给<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>