Udało mi się uruchomić moją aplikację Rails 3 z devise i devise_ldap_authenticatable do uwierzytelnić przeciwko lokalnej Active Directory.Szyny 3 i devise_ldap_authenticatable: Autoryzacja wobec Active Directory?
Teraz chcę dodać uprawnienia w celu umożliwienia dostępu tylko użytkownikom AD należącym do określonych grup AD.
Zacznijmy od prostoty. Najpierw sprawdziłem swojego użytkownika w AD za pomocą polecenia ldapsearch. Wynik zawierał coś takiego ...
(...)
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: (...)
(...)
Ok, teraz zdecydowałem, że chcę, aby ograniczyć dostęp do członków CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com.
Więc zmieniłem ldap.yml zawierać:
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
A ponadto zmieniłem devise.rb zawierać:
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
teraz w kura próby uwierzytelnienia, odmowa dostępu, który nie spodziewałam:
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
Każdy pomysł, jak zezwolenie na AD jest realizowane devise_ldap_authenticatable? Dokumentacja tego modułu nie jest jeszcze tak obszerna, jeśli chodzi o autoryzację.
Proszę odpowiedzieć na poniższe pytanie (zatwierdzić odpowiedź). W ten sposób pozostaje pytanie (niepotrzebnie otwarte). – Roger
Dzięki, że działa świetnie. Uważaj na wielkie litery "CN" i "OU" w require_attribute, w przeciwnym razie nie będzie działać. Zajmuje mi to kilka godzin ... – neonmate
Czy możesz napisać odpowiedź samemu sobie? – Ryan