Примеры использования групп Active Directory/LDAP для разрешений\ролей в приложении Rails

Мне было интересно, как другие люди реализовали этот сценарий. У меня есть внутреннее приложение rails (управление запасами, печать этикеток, доставка и т. д.). Я переписываю безопасность в системе, потому что старый способ стал громоздким в обслуживании (таблица пользователей, пароли, роли) - я использовал restful_authentication и роли. Он был реализован около 3 лет назад. Я уже внедрил AuthLogic с ruby-ldap-net для аутентификации пользователей (на самом деле это было на удивление легко, по сравнению с тем, как я раньше боролся с другими фреймворками/языками). Следующий шаг — роли. У меня уже есть группы, определенные в Active Directory, поэтому я не хочу запускать отдельную систему ролей в своем приложении rails, я просто хочу повторно использовать группы Active Directory, поскольку эта часть системы уже поддерживается для других целей (общие диски , резервные копии, доступ к ПК и т. д.)

Поэтому мне интересно, есть ли у других опыт реализации разрешений/ролей в приложении rails на основе групп в Active Directory или LDAP. Кроме того, требования к ролям довольно сложны.

Вот пример:

Например, у меня есть пользователи, которые принадлежат к группе супервайзеров в AD и в отделе инвентаризации, поэтому я был этим пользователем, чтобы иметь возможность запускать «расширенные» задачи в инвентаризации — регулировать количество, запускать отчеты, однако другие «супервайзеры» из других отделов, не должно быть в состоянии сделать это, также высшее руководство - должно иметь возможность использовать эти отчеты (независимо от того, принадлежат ли они к инвентаризации или нет), но не руководство среднего звена, если они не находятся в группе инвентаризации. Администраторы системы (администраторы домена) должны иметь неограниченный доступ к системе, за исключением части отдела кадров и финансов, если только они не находятся в отделе кадров (например, вы не хотите, чтобы все системные администраторы (кроме одного авторизованного) видели личную информацию другого сотрудники).

Смотрел на acl9, cancan, aegis. Мне было интересно, есть ли какие-либо преимущества/против использования одного по сравнению с другим для этого конкретного использования доступа к системе на основе AD. Предложите другие системы, если у вас есть хороший опыт.

Спасибо!!!


person konung    schedule 13.03.2010    source источник


Ответы (1)


ActiveLDAP (Документация, Github) имеет некоторые функции, которые вам нужны, а именно:

  • Вы можете сопоставить объекты LDAP (экземпляры класса объектов) с объектами в приложении Rails. API не полностью отражает ActiveRecord, но его довольно легко понять и изучить.
  • Очевидно, что невозможно объединить и т. д. между LDAP и реляционными базами данных, но вы можете написать немного умный код, чтобы сделать составные данные легко доступными либо из объекта ActiveLDAP, либо из объекта ActiveRecord.
  • ActiveLDAP также предоставляет методы для записи в LDAP, которые позволяют вам управлять своими пользователями и ролями в LDAP с рельсов, устраняя необходимость управлять пользовательской таблицей в базе данных, однако таблица пользовательской базы данных, вероятно, по-прежнему будет необходима для хранения конкретных данных приложения. о пользователе.
  • Кроме того, вы можете интегрировать AuthLogic с ActiveLDAP. Вот одна попытка, которую я нашел: Проходная аутентификация LDAP с помощью Authlogic и ActiveLdap
  • Затем вы можете использовать декларативную авторизацию (Pundit) для управления своими ролями и авторизацией.
person Patrick Klingemann    schedule 01.04.2010
comment
Патрик, спасибо за ответ, но позвольте мне уточнить, что я искал. Как я уже упоминал, у меня уже есть часть проверки подлинности, разработанная с помощью authlogic и ruby-ldap-net. Меня интересует часть авторизации, я использовал кучу драгоценных камней, таких как acl9 и декларативная авторизация, я просто хотел посмотреть, делал ли кто-нибудь что-нибудь подобное - сопоставление групп AD / LDAP с ролями с помощью любого гема авторизации - и что проблемы, с которыми они столкнулись. - person konung; 02.04.2010
comment
Ник, в своем ответе я имел в виду, что ActiveLDAP позволит вам сопоставлять роли и пользователей из LDAP с объектами в Ruby, и вы можете использовать декларативную авторизацию для обработки фактической части авторизации вашего приложения на основе ролей для каждого Пользователь. Не зная структуры вашего экземпляра LDAP или специфики вашей схемы авторизации, сложно вдаваться в подробности об архитектуре. - person Patrick Klingemann; 02.04.2010
comment
Первая ссылка на документацию не работает, похоже, это она, activeldap.github.io - person jb.; 16.05.2014