SAML 是否将 RequestedAttribute[FriendlyName] 映射到 Attribute[Name]?

SAML does RequestedAttribute[FriendlyName] map to Attribute[Name]?

创建 (SAML2.0) SP 元数据时,我可以请求 IdP 返回的属性。例如:

...
<md:AttributeConsumingService>
  <md:RequestedAttribute FriendlyName="givenName"
                         Name="urn:oid.2.5.4.42"/>
</md:AttributeConsumingService>
...

成功登录后,我会将其视为 AttributeStatement 的一部分:

...
<saml2:AttributeStatement xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
   <saml2:Attribute Name="givenName">
      Tom
   </saml2:Attribute>
</saml2:AttributeStatement>

...我觉得。

问题是:我请求的 Requested[FriendlyName] 值,在本例中 "givenName" 是否直接映射到返回的 Attribute[Name] 值?也就是说,如果我只是将 FriendlyName 的值更改为 "FirstName",我是否应该期望返回的属性被命名为 "FirstName" 而不是 "givenName"?

而且,这样的更改是否需要在 IdP 端进行更改?也就是说,我应该期望 IdP 在 FriendlyName 的值是 "looking" 而不是 Name="urn:oid.2.5.4.42",还是应该透明地流过(构建良好的 IdP)?

或者,断言属性的名称是否与请求的名称 oid & 相关联,如果我请求 Name="urn:oid.2.5.4.42",我将始终获得断言属性 Name="givenName"

IdP 将 return 类似于此的内容:

<AttributeStatement>
    <Attribute Name="urn:oid:2.5.4.42" FriendlyName="givenName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
        <AttributeValue>Dave</AttributeValue>
    </Attribute>
</AttributeStatement>

属性的正式名称是 urn:oid:2.5.4.42,但它还有一个人类可读的名称,即 'givenName'。 FriendlyName 仅用于用户界面,例如向用户显示已发布的属性。 SP应该使用正式名称(urn:oid ...)来做出授权决定等

您可以从 eduPerson spec 中看到 FriendlyName 可能是什么,它还为您提供了属性的 SAML2 名称。

IdP 将根据数据法等发布您要求其发布的内容,您需要证明您需要该属性才能为 IdP 的用户提供服务。 IdP 将从其存储中获取邮件属性,例如Active Directory 并在 AttributeStatement 中将其发送给您,具体取决于正在使用的配置文件,在本例中为 SAML2 WBSSO,它需要 urn:oid 名称和友好名称。您不应依赖 FriendlyName 进行授权,而应改用 SAML2 名称。 FriendlyName 仅在用户想知道其 IdP 发布了哪些属性时向用户显示。

您可以查看 RequestedAttribute here.

的示例