从 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"
形式发送标头,并将所有属性值的逗号分隔列表作为标头值。