Я использую rhel5 со стеком LAMP для создания интрасети с. Я пытаюсь добиться единого входа с пользователями в нашей сети с помощью IE и Firefox. Используя следующий модуль, я могу это успешно сделать:
mod_auth_kerb
Я хотел бы пойти дальше и разрешить доступ только к определенным местоположениям на основе членства в группе. Я смог добиться этого с помощью mod_authz_ldap. Есть ли способ использовать оба вместе, и если да, есть ли у кого-нибудь примеры?
Ниже приведена настройка SSO kerberos:
<Location /sso/location>
AuthType Kerberos
AuthName "Please Login"
KrbServiceName HTTP
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms DOMAIN.LOCAL
Krb5KeyTab /etc/httpd/keytab
require valid-user
</Location>
Ниже приведена настройка, разрешающая доступ только членам группы:
<Location /allowed/only/for/group>
AuthType Basic
AuthName "Please Login"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=ldapbinduser,CN=Users,DC=domain,DC=local"
AuthLDAPBindPassword ldapbinduserpass
require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
require ldap-group CN=Faculty,CN=Users,DC=domain,DC=local
Satisfy any
</Location>
Я читал об использовании Kerberos для аутентификации, а затем об использовании некоторого кода PHP для поиска в группах, но я надеюсь, что этого можно достичь строго с помощью конфигураций apache и без необходимости изменять код веб-страницы.
Любая помощь приветствуется. Спасибо.
... Google только что показал мне следующее, всем, кто им пользуется: http://www.stanford.edu/services/webauth/
Alias /students /var/www/students
<Location /students>
KrbServiceName HTTP
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbSaveCredentials off
KrbAuthRealms DOMAIN.LOCAL
Krb5KeyTab /etc/httpd/keytab
KrbAuthoritative off
AuthType Kerberos
AuthName "Please Login"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?userPrincipalName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=ldapsearchuser,CN=Users,DC=domain,DC=local"
AuthLDAPBindPassword ldapsearchuserpass
require ldap-group CN=Students,CN=Users,DC=domain,DC=local
require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
</Location>
Это позволяет всем пользователям, которые являются членами групп AD учащихся / сотрудников, получать доступ к страницам позади http: // интранет / студенты без необходимости указывать учетные данные для входа при условии, что их IE / Firefox настроены правильно.
UserPrincipalName использовалось вместо sAMAccountName, потому что модуль kerberos передавал имя пользователя @ REALM модулю ldap.
Теперь у меня есть проблема, когда, если кто-то не авторизован, ему предоставляются:
Требуется авторизация. Этот сервер не смог проверить, есть ли у вас право доступа к запрошенному документу. Либо вы ввели неправильные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить необходимые учетные данные.
Кто-нибудь знает, как вызвать диалоговое окно имени пользователя / пароля, чтобы они могли попробовать альтернативные учетные данные? После неудачного получения авторизации единственный способ заставить его запросить учетные данные - это очистить мой кеш. Если я вошел в систему как авторизованный пользователь, но не авторизованный для этого ресурса, у меня нет возможности предоставить альтернативные учетные данные (что может быть хорошо).
KrbMethodK5Passwd включает откат к базовой аутентификации, но вы теряете безопасность, разумеется, никогда не оставляя ваш пароль с компьютера вашего клиента.