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.
的示例
创建 (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.