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

时间:2018-01-30 17:02:16

标签: saml-2.0

创建(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]值,在这种情况下&#34; givenName&#34;直接映射到返回的Attribute[Name]值?也就是说,如果我只是将FriendlyName的值更改为&#34; FirstName&#34;,我是否应该将返回的属性命名为&#34; FirstName&#34;而不是&#34; givenName&#34;?

并且,这种变化是否需要在IdP方面进行更改?也就是说,我应该期望IdP是&#34;看&#34;在FriendlyName的值而不是Name =&#34; urn:oid.2.5.4.42&#34;,还是它应该透明地流过(一个精心构建的IdP)?

或者,断言属性的名称与请求的名称oid&amp;如果我请求Name="urn:oid.2.5.4.42",我将始终获得声明属性Name="givenName"

1 个答案:

答案 0 :(得分:1)

IdP将返回与此类似的内容:

<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,但它也有一个人类可读的名称,即“给出名称”和#39;。 FriendlyName仅用于显示用户已发布的属性的用户界面。 SP应该使用正式名称(urn:oid ...)来做出授权决定等。

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

IdP将根据数据法律规定发布您要求发布的内容,并且您需要显示您需要该属性以向IdP的用户提供服务。 IdP将从其商店获得邮件属性,例如Active Directory并在AttributeStatement中发送给您,受使用的配置文件的限制,在本例中为SAML2 WBSSO,它需要urn:oid Name和FriendlyName。您不应该依赖FriendlyName进行授权,而应该使用SAML2名称。 FriendlyName仅向用户显示,如果他们想知道他们的IdP已发布了哪些属性。

您可以看到RequestedAttribute here

的示例