2015-10-28 3 views
0

Как настроить PicketLink (LDAP), чтобы создать несколько базовых отношений многих? Предполагается, что Пользователь 0 < -> * Роль 0 < -> * Разрешение Таким образом, у пользователя может быть несколько ролей и роли, которые могут иметь несколько разрешений.Горячий для создания отношений «многие ко многим» в PicketLink (LDAP)?

В PicketLink я могу создать некоторую роль и добавить туда несколько пользователей (даже пользовательские классы):

member:user1 
member:user2 

Но как я могу добавить некоторые разрешение на ту же роль, или другим способом, чтобы создать это многие ко многим realtionship в 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") 

Но во время выполнения я получил ошибку и не могу добавить это к моему relationshipmanager.

Кто-нибудь видел хороший пример того, как многие отношения многие в LDAP/PicketLink? Или может быть какое-то решение подобной проблемы?

ответ

0

Я новичок в LDAP, но я не могу найти способ сделать это, возможно, потому, что LDAP похож на дерево/иерархию, а не базу данных. Лучший, что я мог придумать для грубых многих ко много (систем < -> пользователей < -> роли) является:

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

Оба члена и roleOccupant имеет DistinguishedName, как выше их так ожидать DN в качестве значения , Атрибут member установлен на запись роли в другом месте (например, cn = ROLE, ou = systemRoles, dc = company), а roleOccupant - пользователю (например, uid = USERNAME, ou = users, dc = company).

Я поставил системы сверху, так как я ожидал, что буду известен для своего приложения, но если вы хотите узнать системы для данного пользователя, которые будут сложнее. Похоже, что отношения многих и многих лучше избегать, если это вообще возможно.