如何使用PicketLink将SAML断言属性值映射到SP中的角色?

时间:2014-12-18 08:14:31

标签: saml saml-2.0 picketlink

我们正在实施基于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_MEETINGCN=g-z-BCM...应映射到ROLE_BCM。我们可能会写一个登录模块来做到这一点,但对我来说这似乎是一个非常标准的任务。但是我还没有设法找到一个配置解决方案。

1 个答案:

答案 0 :(得分:1)

似乎我们已经弄明白了。

我们需要的是org.jboss.security.auth.spi.RoleMappingLoginModule

<login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule"
  flag="optional"> 
  <module-option name="rolesProperties">roles.properties</module-option>
</login-module>

AD组名称和内部应用程序角色之间的映射在roles.properties文件中配置:

CN\=ga-A-102213-...=SomeInternalRole