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

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

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

Вот пример:

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

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

Спасибо !!!

1 Ответ

5 голосов
/ 01 апреля 2010

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

  • Вы можете отобразить объекты LDAP (ObjectЭкземпляры класса) к объектам в приложении Rails.API точно не отражает ActiveRecord, но его довольно легко понять и изучить.
  • Очевидно, что невозможно объединяться и т. Д. Через LDAP и реляционные базы данных, но вы могли бы написать слегка умный код, чтобы сделать составнойданные легко доступны из объекта ActiveLDAP или объекта ActiveRecord.
  • ActiveLDAP также предоставляет методы записи в LDAP, что позволяет вам управлять своими пользователями и ролями в LDAP с рельсов, устраняя необходимость в управлении таблицей пользователей в базе данных, однако таблица базы данных пользователей, скорее всего, все еще будетнеобходимо хранить специфичные для приложения данные о пользователе.
  • Кроме того, вы можете интегрировать AuthLogic с ActiveLDAP.Вот одна попытка, которую я обнаружил: Сквозная аутентификация LDAP с Authlogic и ActiveLdap
  • Затем вы можете использовать декларативную авторизацию ( Pundit ) для обработки ваших ролей иавторизация.
...