我们正在实施基于 SAML2 的 SSO 解决方案,并在 SP 端使用 PicketLink。
在 IDP 方面,我们有一个不同的实现,它被配置为输出多值memberOf
属性(这些实际上是 LDAP/AD 组成员资格。所以我们在断言中基本上得到了类似的东西:
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ... >
...
<saml:Assertion ...>
...
<saml:AttributeStatement>
<saml:Attribute FriendlyName="Role" Name="Role">
<saml:AttributeValue>authenticated</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute FriendlyName="memberOf" Name="memberOf">
<saml:AttributeValue>CN=ga-A-102213-...</saml:AttributeValue>
<saml:AttributeValue>CN=g-z-MeetingPlace,...</saml:AttributeValue>
<saml:AttributeValue>CN=g-z-Serviceportal,...</saml:AttributeValue>
<saml:AttributeValue>CN=g-z-BCM...</saml:AttributeValue>
...
</saml:Attribute>
</saml:AttributeStatement>
...
</saml:Assertion>
</samlp:Response>
我的问题是,如何配置 PicketLink/JBoss 以将这些memberOf
值映射到应用程序/SP 中的特定角色?
例如CN=g-z-MeetingPlace,...
应该映射到ROLE_MEETING
或CN=g-z-BCM...
应该映射到ROLE_BCM
. 我们可能可以编写一个登录模块来做到这一点,但对我来说这似乎是一项非常标准的任务。但是我还没有设法找到一个配置解决方案。