Группировка пользователей LDAP с помощью настраиваемого атрибута

У меня есть веб-приложение, и я хочу контролировать, какой пользователь может видеть какие данные. Поэтому я подумал, что пользователь может принадлежать к группе (например, администратор базы данных, специалист по промежуточному программному обеспечению, ребята из UNIX и т. д.), а вошедший в систему пользователь может видеть только свои данные в приложении.
Я хочу, чтобы LDAP выполнял аутентификацию. Я предполагаю, что в LDAP не указаны такие группы (т.е. я не хочу использовать группы LDAP, поскольку не могу заставить LDAP компании создавать группы и помещать пользователей в эти группы).

Я думаю о гибком решении, таком как возможность использовать настраиваемый атрибут для каждого пользователя (скажем, с именем «acces_groups»), какие группы могут быть перечислены через запятую.
Я читал, что схема объектного класса (например, OrganizationPerson) необходимо изменить для этого. Но есть ли простой способ добавить такой пользовательский атрибут пользователю в LDAP (я говорю об уже работающем LDAP компании)? Или как бы вы решили это (без нарушения/нарушения текущего LDAP)? Я не сказал, какой тип LDAP (OpenLDAP, Active Directory и т. д.) по той причине, что я хотел бы иметь здесь общее решение.


person Viktor    schedule 24.05.2017    source источник
comment
Использование многозначного атрибута обычно используется вместо строки, разделенной запятыми.   -  person jwilleke    schedule 25.05.2017


Ответы (1)


Это два возможных решения/реализации:

  • Что вы предполагали: вы можете добавить схему и не изменять объектный класс organizationalPerson. (Поскольку изменение уже установленной схемы сделает ваш LDAP нестандартным). Затем вы добавляете этот объектный класс всем своим пользователям, чтобы позволить им использовать атрибуты, определенные этой схемой.

    Вы можете определить атрибут acces_groups и сделать его многозначным. Вы также можете определить по одному атрибуту для каждого флага, который вам нужен dba, middleware и т. д., и сделать его логическим и т. д.

    Почему я бы не стал этого делать:

    • This is a much more complicated and intrusive way to do it than using built in mechanisms that are readily available in LDAP.
    • Если ваш администратор LDAP позволяет вам изменять ваши схемы LDAP таким образом, не должно возникнуть проблем с тем, чтобы попросить его использовать вместо этого группы, поскольку этот метод намного проще и требует больше времени для реализации.
    • To manage it on daily basis is just a pain because you have no integrity mechanism. All the "CRUD" operations on the "emulated" group will have to be done "manually"
      • If you want to delete a group, you will have to delete the attribute on all the users who have it set.
      • Если вы хотите перечислить «группу», вам придется искать всех пользователей, у которых атрибут установлен с правильным значением.
      • и т.п.
  • Использование групп: Вы действительно можете создавать группы, такие как dba, middleware и т. д., и назначать пользователей в эти группы.

    • It will allow you the use of group member ship and automatically populate an attribute in your user with the group which he is part of
    • Это стандарт LDAP, и ему нужно работать только с данными, а не с конфигурациями LDAP (что включает время простоя, возможные ошибки/неудачи и т. д.).
    • Если ваша компания позволяет вам изменять конфигурацию LDAP И данные пользователей, то она также должна позволять вам создавать группы и назначать в них людей.
person Esteban    schedule 29.05.2017
comment
Отличное объяснение, Эстебан, спасибо! Это имеет смысл. - person Viktor; 29.05.2017