创建(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"
。
答案 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。