Skip to content

Latest commit

 

History

History
33 lines (19 loc) · 3.48 KB

File metadata and controls

33 lines (19 loc) · 3.48 KB
description
本博客采用知识共享署名 4.0 国际许可协议进行许可

3.4.1.5.1 代理处理规则

身份提供商可以代理<AuthnRequest>,在其中包含的<ProxyCount>属性被省略或大于零的情况下。身份提供商选择代理与否取决于本地策略。身份提供商可以选择代理<IDPList>中指定的提供商,如果提供的话,但是并不强制这么做。

在<ProxyCount>属性值为零的情况下,身份提供商不能代理请求。除非可以直接对请求提出者进行身份认证,否则的话,身份提供商必须返回一个包含二级<StatusCode>的错误<Status>元素,且二级<StatusCode>的值为urn:oasis:names:tc:SAML:2.0:status:ProxyCountExceeded

如果它选择代理到SAML身份提供商的话,当创建新的<AuthnRequest>时,代理身份提供商必须包括同原始请求 包含的所有信息等价或更严格的形式(例如身份认证上下文策略),但是,代理身份提供商可以任意的指定任何的它希望的<NameIDPolicy>,以增加响应成功的机会。

如果身份验证提供商不是SAML身份提供商,那么代理提供商必须有其他方式来确保管理用户代理交互的元素(例如, <IsPassive>)将被身份验证提供商认可。

新的<AuthnRequest>必须包含一个<ProxyCount>属性,该属性的值最多比原始值少1。如果原始请求不包括<ProxyCount>属性,那么新请求应该包含一个<ProxyCount>属性。

如果原始请求中指定了<IDPList>,那么新请求中必须也包含 <IDPList>。 代理身份提供商可以向<IDPList>的末尾增加额外的身份提供商,但是不能从<IDPList>中移除任何一个。

认证请求和响应会根据本节给出的规则和使用概要文件,以正常方式的进行处理。一旦请求提出人通过了代理身份提供商的身份认证(对于SAML场景,通过提供<Response>),则需要遵循以下步骤:

  • 代理身份提供商通过复制原始断言或非SAML等价物中的相关信息,来准备代表自己的新断言。

  • 新断言的<saml:Subject>必须包含一个标识符,该标识符能够满足原始请求中由<NameIDPolicy>元素定义的偏好。

  • 新断言的<saml:AuthnStatement>中必须引入一个包含<saml:AuthenticatingAuthority>元素的<saml:AuthnContext>元素,并且<saml:AuthenticatingAuthority>元素引用那个代理提供商推荐请求提出者去使用的身份提供商。如果原始断言包含引入了一个或多个<saml:AuthenticatingAuthority>元素的<saml:AuthnContext>信息,那么这些元素应该被包含在新的断言中,而新元素放在它们之后。

  • 如果认证提供商不是SAML提供商,那么代理身份提供商必须为认证提供商生成一个唯一的标识符值。这个值应该在不同的请求中随着时间的推移保持一致。该值不得与其他SAML提供商使用或生成的值冲突。

  • 根据代理身份提供商的政策,可以复制、翻译或省略任何其他的<saml:AuthnContext>信息,前提是满足请求者规定的原始要求。

如果在未来,身份提供商被要求为第二个请求方验证相同的请求提出人,并且这个请求与原始请求相同或不那么严格(由代理身份提供商确定),则身份提供商可以跳过为认证提供方创建新的<AuthnRequest>并且立即发出另一个断言(假设它收到的原始断言或非SAML等价物仍然有效)。