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がこれを行うことができないようにしていますか?

また、いくつかのカスタム マッピング用にカスタム メンバーシップ クラスを作成しようとしました。

    .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 の両方が上長として識別名を持っているため、値として DN が期待されます。member 属性は別の場所で役割エントリに設定され (例: cn=ROLE,ou=systemRoles,dc=company)、roleOccupant はユーザーに設定されます (例: uid=USERNAME,ou=users,dc=company)。

それ以来、私はシステムを一番上に置いてきましたが、それは私のアプリケーションで知られていると期待していますが、特定のユーザーのシステムを見つけたい場合は、それは難しいでしょう. 可能であれば、多対多の関係は避けるのが最善のようです。

于 2015-12-23T10:23:14.943 に答える