(Сжатие Debian)
Я пытаюсь настроить apache для использования аутентификации Kerberos, чтобы разрешить пользователям AD входить в систему. Он работает, но дважды запрашивает у пользователя имя пользователя и пароль, при этом первый раз игнорируется (независимо от того, что его вводят. ) Только второе приглашение включает строку AuthName из конфигурации (то есть: первое окно - это общее имя пользователя / пароль, второе включает заголовок «Вход Kerberos»). Я не беспокоюсь о том, что интегрированная проверка подлинности Windows работает на этом этапе, Я просто хочу, чтобы пользователи могли входить в систему со своей учетной записью AD, поэтому нам не нужно настраивать второй репозиторий учетных записей пользователей.
Как мне это исправить, чтобы исключить первое бесполезное приглашение?
Директивы в файле apache2.conf:
<Directory /var/www/kerberos>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms ONEVUE.COM.AU.LOCAL
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/SYD01TBUG02.onevue.com.au.local@ONEVUE.COM.AU.LOCAL
require valid-user
</Directory>
krb5.conf:
[libdefaults]
default_realm = ONEVUE.COM.AU.LOCAL
[realms]
ONEVUE.COM.AU.LOCAL = {
kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
master_kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
admin_server = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
default_domain = ONEVUE.COM.AU.LOCAL
}
[login]
krb4_convert = true
krb4_get_tickets = false
Журнал доступа при доступе к защищенному каталогу (обратите внимание на два отдельных 401)
192.168.10.115 - - [24/Aug/2012:15:52:01 +1000] "GET /kerberos/ HTTP/1.1" 401 710 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - - [24/Aug/2012:15:52:06 +1000] "GET /kerberos/ HTTP/1.1" 401 680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - myaccount.lastname@MYDOMAIN.LOCAL [24/Aug/2012:15:52:10 +1000] "GET /kerberos/ HTTP/1.1" 200 375 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
И одна строчка в error.log
[Fri Aug 24 15:52:06 2012] [error] [client 192.168.0.115] gss_accept_sec_context(2) failed: An unsupported mechanism was requested (, Unknown error)
Не знаю, нужен ли вам ответ, но надеюсь, что помогу кому-нибудь еще, поделившись своим опытом. Я считаю, что если вы выполните эти шаги, все будет хорошо.
setspn -A HTTP/SYD01TBUG02.onevue.com.au.local ad_username
ktpass -princ HTTP/SYD01TBUG02.onevue.com.au.local@ONEVUE.COM.AU.LOCAL -mapuser ad_username -pass xxxxxx -crypto ALL -ptype KRB5_NT_PRINCIPAL -out SYD01TBUG02.keytab -setupn -setpass
<VirtualHost *:80>
DocumentRoot "/var/www/kerberos"
ServerName SYD01TBUG02.onevue.com.au.local
ServerAlias SYD01TBUG02
AddDefaultCharset UTF-8
DirectoryIndex index.php
ErrorLog /var/log/apache2/error_SYD01TBUG02.log
TransferLog /var/log/apache2/transfer_SYD01TBUG02.log
LogLevel warn
ServerAdmin admin@onevue.com.au
<Location "/">
AuthType Kerberos
KrbAuthRealms ONEVUE.COM.AU.LOCAL
KrbServiceName HTTP/SYD01TBUG02.onevue.com.au.local@ONEVUE.COM.AU.LOCAL
Krb5Keytab /etc/apache2/keytab/SYD01TBUG02.keytab
KrbMethodNegotiate on
KrbMethodK5Passwd on
KrbVerifyKDC on
require valid-user
</Location>
<Directory />
</Directory>
</VirtualHost>
sudo service apache2 reload
Надеюсь, что это поможет настроить аутентификацию Kerberos на веб-сервере.
P.S. Если вы хотите включить единый вход по полному адресу (например, SYD01TBUG02.onevue.com.au.local) вам следует добавить SYD01TBUG02.onevue.com.au.local в зону интрасети либо через групповые политики AD (если это необходимо на нескольких машинах в домене), либо локально через настройки Internet Explorer. Эти настройки влияют на все браузеры, установленные в системе.
Это потому, что когда пользователь впервые вводит u / p, токен ntlm отправляется на сервер. Во второй раз это правильный токен kerberos.
К сожалению, устранить первую подсказку невозможно.
Если единый вход в систему не является обязательным, вы можете отключить согласование, установив «KrbMethodNegotiate off». Это даст вам только один базовый вход в систему, а также позволит избежать дополнительных запросов GET для каждой транзакции.