Назад | Перейти на главную страницу

Apache SSO с Active Directory и предоставление авторизации по группам

Я использую 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 включает откат к базовой аутентификации, но вы теряете безопасность, разумеется, никогда не оставляя ваш пароль с компьютера вашего клиента.