【问题标题】:Hot to create many-to-many relationship in PicketLink (LDAP)?在 PicketLink (LDAP) 中创建多对多关系很热门?
【发布时间】:2015-10-28 14:30:43
【问题描述】:

如何配置 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 中建立多对多关系的好例子? 或者可能对类似问题有一些解决方案?

【问题讨论】:

    标签: ldap picketlink


    【解决方案1】:

    我是 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)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多