0

如何配置 PicketLink (LDAP) 以创建一些基本的多对多关系?假设:用户 0<-->* 角色 0<-->* 权限 所以用户可以有多个角色,角色可以有多个权限。

在 PicketLink 中,我可以创建一些角色并添加一些用户(甚至是自定义类):

member:user1
member:user2

但是,我怎样才能将一些权限添加到同一个角色或以其他方式在 LDAP\PicketLink 中创建这种多对多关系?所以我的角色看起来像这样或类似的:

member:user1
memberPermission: permission1

我找到了一些信息: https ://docs.jboss.org/picketlink/2/2.6.0.CR1/reference/html/ch09.html “LDAP 配置支持单个的简单层次结构(父/子)的映射类型。” 是不是 LDAP 不能做到这一点?

我还尝试为一些自定义映射创建一些自定义成员资格类:

    .mapping(CustomGroup.class)
        .baseDN(CG_DN_SUFFIX)
        .objectClasses(GROUP_OF_NAMES)
        .attribute("name", CN, true)
        .readOnlyAttribute("createdDate", CREATE_TIMESTAMP)
        .parentMembershipAttributeName("member")
        //.parentMembershipAttributeName("usermember")
    .mapping(CustomGroupMembership.class)
        //configure which identity type is the owner of a relationship
        .forMapping(CustomGroup.class)
        .attribute("member", "member")
        .attribute("memberPermission", "memberPermission")

但是在运行时我遇到了一些错误,无法将其添加到我的关系管理器中。

有没有人见过在 LDAP/PicketLink 中建立多对多关系的好例子?或者可能对类似问题有一些解决方案?

4

1 回答 1

0

我是 LDAP 新手,但我也找不到这样做的方法,可能是因为 LDAP 就像树/层次结构而不是数据库。对于粗略的多对多(系统<-->用户<-->角色),我能想到的最好的方法是:

organizationalUnit ou=systems
  entries : device cn=system name
    entries : custom object with a member and a roleOccupant

member 和 roleOccupant 都将 distinctName 作为其上级,因此期望 DN 作为值。member 属性设置为别处的角色条目(例如 cn=ROLE,ou=systemRoles,dc=company),并且 roleOccupant 设置为用户(例如 uid=USERNAME,ou=users,dc=company)。

我已经把系统放在首位,因为我希望我的应用程序能够为人所知,但是如果你想找出给定用户的系统,那就更难了。如果可能的话,似乎最好避免多对多关系。

于 2015-12-23T10:23:14.943 回答