description |
---|
本博客采用知识共享署名 4.0 国际许可协议进行许可 |
<NameIDPolicy>元素指定了用于响应<AuthnRequest>消息的断言的主体中的名称标识符。它是NameIDPolicyType
复杂类型,定义了下列属性:
- Format [可选]
指定与本规范或其他规范中定义的名称标识符格式相对应的URI引用(示例见第8.3节)。专门定义一个额外的值urn:oasis:names:tc:SAML:2.0:nameid-format:encrypted
,专门用于指示需要对生成的标识符进行加密的请求。
- SPNameQualifier [可选]
指定在服务提供商(而不是请求者)的命名空间中、或在服务提供商的附属组织的命名空间中,返回(或创建)断言主体的标识符。例如,可以参考第8.3.7节中urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
的定义。
- AllowCreate [可选]
一个布尔值,用来指定在执行请求的过程中,是否允许身份提供商创建新的标识符来代表身份主体。默认值是false
。当值为false
的时候,代表请求者做了以下限制:只有在主体的身份标识之前已经被建立的情况之下,身份提供商才能向其发布一个断言。注意,这并不阻止身份提供商在该特定请求的上下文之外创建此类标识符(例如,提前创建大量的身份主体)。
当使用该元素时,如果此内容不被身份提供商理解或接受,则必须返回一个带有错误<Status>的<Response>消息元素,该元素可能包含值为urn:oasis:names:tc:SAML:2.0:Status:InvalidNameIDPolicy
的第二级<StatusCode>元素。
如果Format
被省略或设置为urn:oasis:names:tc:SAML:2.0:nameidformat:unspecified
,那么身份提供商可以随意地返回任何类型的标识符,但要受到其他限制,比如元素的内容、身份提供者或身份主体的策略。名称标识符解密后的格式可以是所请求主体被身份提供商所支持的任何类型。
无论<NameIDPolicy>中的Format
格式如何,如果身份提供商的有效策略要求使用加密标识符,则身份提供商就可以在生成的断言主体中返回<EncryptedID>。
注意,如果请求者希望允许身份提供商为不存在的身份主体建立新的标识符,那么它就必须包含AllowCreate
元素,并且要把它的值设置为true
。否则,只有那些身份提供商之前已经为其建立了可用标识符的身份主体才能被认证成功。这一点主要在使用urn:oasis:names:tc:SAML:2.0:nameid format:persistent format
值的场景下有用(参见8.3.7章节)。
下列的schema片段定义了<NameIDPolicy>元素和它的NameIDPolicyType
复杂类型:
<element name="NameIDPolicy" type="samlp:NameIDPolicyType"/>
<complexType name="NameIDPolicyType">
<attribute name="Format" type="anyURI" use="optional"/>
<attribute name="SPNameQualifier" type="string" use="optional"/>
<attribute name="AllowCreate" type="boolean" use="optional"/>
</complexType>