从 IDP 到 SP(在进行身份桥接的情况下,为 Unified Access Gateway)的 SAML 响应包含具有 SAML 属性的 SAML 断言。可在 IDP 中将 SAML 属性配置为指向各种参数,例如用户名和电子邮件等。

在使用 SAML 的基于标头的身份验证中,可以将 SAML 属性的值作为 HTTP 标头发送到后端代理目标。Unified Access Gateway 中定义的 SAML 属性名称与 IDP 中定义的属性名称相同。例如,如果身份提供程序具有定义为 Name: userName Value: idmadmin 的属性,那么,必须将 Unified Access Gateway 中的 SAML 属性名称定义为 "userName"

与 IDP 中定义的属性不匹配的 SAML 属性会被忽略。Unified Access Gateway 支持多个 SAML 属性和多值 SAML 属性。下面提供了对于每种情况,预计从身份提供程序获得的 SAML 断言的摘录示例。例如,

1. 对于多个 SAML 属性,预计从 IDP 获得的 SAML 响应

<saml:AttributeStatement>
      <saml:Attribute Name="userName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
                  <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">idmadmin</saml:AttributeValue>
      </saml:Attribute>
      <saml:Attribute Name="userEmail" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
                 <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">63ecfabf-a577-46c3-b4fa-caf7ae49a6a3</saml:AttributeValue>
      </saml:Attribute>
</saml:AttributeStatement>

在上述示例中,断言包含两个属性:"userName""userEmail"。如果只为 "userName" 配置了基于标头的身份验证,且标头名称为 "HTTP_USER_NAME",那么,将以 "HTTP_USER_NAME: idmadmin" 形式发送标头。由于未在 Unified Access Gateway 上为 "userEmail" 配置基于标头的身份验证,因此不会将其作为标头发送。

2. 对于多值 SAML 属性,预计从 IDP 获得的 SAML 响应

<saml:AttributeStatement>
      <saml:Attribute Name="group" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
             <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">All Employees</saml:AttributeValue>
             <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">All Contractors</saml:AttributeValue>
             <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">All Executives</saml:AttributeValue>
             <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">All</saml:AttributeValue> 
     </saml:Attribute>
</saml:AttributeStatement>

在上述示例中,属性 "group" 包含四个值,即 "All Employees""All Contractors""All Executives""All"。如果只为 "group" 配置了基于标头的身份验证,且标头名称为 "HTTP_GROUP",那么,将以 "HTTP_GROUP: All Employees, All Contractors, All Executives, All" 形式发送标头,并将所有属性值的逗号分隔列表作为标头值。