Rails 3 & devise_ldap_authenticatable: Авторизация в Active Directory?

Я успешно запустил приложение Rails 3 с devise и devise_ldap_authenticatable для аутентификации в локальной Active Directory.

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

Для начала я сначала нашел своего пользователя в AD с помощью команды linux ldapsearch. Результат содержал что-то вроде ...

(...)
memberOf: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
memberOf: CN=my,OU=foo,DC=bar2,DC=role,DC=domain,DC=com
memberOf: (...)
(...)

Хорошо, теперь я решил, что хочу ограничить доступ для членов CN = my, OU = foo, DC = bar, DC = role, DC = domain, DC = com.

Итак, я изменил свой ldap.yml, чтобы он содержал:

authorizations: &AUTHORIZATIONS
  group_base: ou=role,dc=domain,dc=com
  required_groups:
    - CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com

development:
  (...)
  <<: *AUTHORIZATIONS

И, кроме того, изменил свой devise.rb, чтобы он содержал:

Devise.setup do |config|
  config.ldap_logger = true
  config.ldap_create_user = true
  config.ldap_update_password = false
  config.ldap_check_group_membership = true # <-- activated this line
  config.ldap_use_admin_to_bind = true
  #config.ldap_ad_group_check = true <-- don't know what this is good for

Теперь при попытке аутентификации доступ запрещен, чего я не ожидал:

User CN=myuser,OU=org,DC=domain,DC=com is not in group: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com

Есть идеи, как авторизация в AD выполняется с помощью devise_ldap_authenticatable? Документация по этому модулю еще не настолько исчерпывающая, что касается авторизации.

13
задан hims056 25 June 2013 в 10:47
поделиться