Gdy już się dorobi systemu Active Directory wygodnie jest wykorzystać jego bazę użytkowników do autoryzacji w różnych miejscach, np. do pewnych “tajnych i tajniejszych” stron w Apache. Najprościej można to zrobić z wykorzystaniem LDAP.
Warto sprawdzić czy i jak możemy dostać się do kontrolerów. Gdy już mamy wszystkie potrzebne parametry konfigurujemy Apachego - na początek aktywujemy moduły:
a2enmod ldap
a2enmod authnz_ldap
Teraz możemy edytujemy globalny plik konfiguracyjny mod_ldap’a by ustawić nieco cache’y (bardzo przydatne). Wartości można dostosować do potrzeb ale przykładowe powinny wystarczyć na początku:
LDAPSharedCacheSize 500000
LDAPCacheEntries 1024
LDAPCacheTTL 600
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 600
<Location /ldap-status>
SetHandler ldap-status
Order deny,allow
Deny from all
# Allow from 127.0.0.1 ::1
Allow from 192.168.1.15/32
Satisfy all
</Location>
Warto zwrócić uwagę na drugą część - można aktywować podgląd statusu mod_ldap’a co bywa przydatne na etapie testów (np. by zobaczyć kto aktualnie jest zalogowany) - ja umożliwiłem dostęp ze swojego zdalnego komputera. Teraz restart Apachego aby wszystko się załadowało:
invoke-rc.d apache2 restart
Środowisko mamy gotowe, możemy skonfigurować vhosta. Poniższe opcje wrzucamy np. do klauzuli <Directory>
lub <Location>
:
Authtype basic
Authname "Zaloguj sie kontem domenowym"
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthUserFile /dev/null
AuthLDAPUrl "ldap://server1.nazwadomeny.local:389 10.0.0.32:389/DC=nazwadomeny,DC=local?sAMAccountName?sub?(objectClass=person)" NONE
AuthLDAPBindDN "CN=kontodomenowe,OU=System Accounts,DC=nazwadomeny,DC=local"
AuthLDAPBindPassword "haslo konta domenowego"
Require valid-user
# Require ldap-dn ou=Jakies przykladowe OU
Najważniejsze parametry to:
- AuthLDAPUrl - tutaj podajemy parametry do połączenia LDAP, w pierwszej części możemy podać kilka serwerów by mieć backup, później korzeń od którego będzie rozpoczynane przeszukiwanie drzewa (tutaj cała domena), na końcu filtry,
- AuthLDAPBindDN - konto którym autoryzujemy się do kontrolera by móc przeszukiwać na nim obiekty (podane jako ścieżka LDAP),
- AuthLDAPBindPassword - hasło do powyższego konta,
- Require ldap-dn - można nie tylko sprawdzać czy użytkownik jest prawidłowy ale również czy jest w pewnym OU, grupie itd…
Teoretycznie wszystko jest poprawnie ale za cholerę nie chciało działać dopiero dodanie do /etc/ldap/ldap.conf opcji: REFERRALS off sprawiło że autoryzacja działa poprawnie - oneliner by to uzyskać:
echo "REFERRALS off" >> /etc/ldap/ldap.conf
Ja mam Apachego 2.2 i jest to jedyna opcja by uzyskać ten efekt. W wersji od 2.4 jest dodatkowa opcja LDAPReferrals , która pozwala na zmianę tego zachowania wprost z konfiguracji Apachego.