Проблемы с настройкой единого входа с использованием аутентификации Kerberos
Мне нужно для проверки подлинности набора приложений Ruby on Rail через Active Directory с использованием проверки подлинности Kerberos.
Некоторая техническая информация:
- Я использую Apache
- установленный mod_auth_kerb
- В httpd.conf я добавил LoadModule auth_kerb_module modules/mod_auth_kerb.so
В /etc/krb5.conf я добавил следующую конфигурацию
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EU.ORG.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] EU.ORG.COM = { kdc = eudc05.eu.org.com:88 admin_server = eudc05.eu.org.com:749 default_domain = eu.org.com } [domain_realm] .eu.org.com = EU.ORG.COM eu.org.com = EU.ORG.COM [appdefaults] pam = { debug = true ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
Когда я тестирую kinit validuser и ввожу пароль, аутентификация проходит успешно.
klist возвращает:
Ticket cache: FILE:/tmp/krb5cc_600 Default principal: validuser@EU.ORG.COM Valid starting Expires Service principal 02/08/13 13:46:40 02/08/13 23:46:47 krbtgt/EU.ORG.COM@EU.ORG.COM renew until 02/09/13 13:46:40 Kerberos 4 ticket cache: /tmp/tkt600 klist: You have no tickets cached
В настройках приложения Apache я добавил
IfModule mod_auth_kerb.c> Location /winlogin> AuthType Kerberos AuthName "Kerberos Loginsss" KrbMethodNegotiate off KrbAuthoritative on KrbVerifyKDC off KrbAuthRealms EU.ORG.COM Krb5Keytab /home/crmdata/httpd/apache.keytab KrbSaveCredentials off Require valid-user </Location> </IfModule>
Я перезапустил apache
Теперь несколько тестов:
Когда я пытаюсь получить доступ к приложению из Win7, я получаю всплывающее окно с текстом:
Warning: This server is requesting that your username and password be sent in an insecure manner (basic authentification without a secure connection)
Когда я ввожу действительные учетные данные, тогда мое приложение открывается успешно, и все работает нормально.
Вопросы:
Это нормально, что для пользовательских всплывающих окон такие окна? Если я использую аутентификацию NTLM, то такого всплывающего окна нет. Я проверил IE Internet Options и там проверено "Включить встроенную аутентификацию Windows".
Почему IE пытается отправить имя пользователя и пароль в приложение apache? Если я правильно понимаю, Windows самостоятельно должна выполнить аутентификацию через Active Directory с использованием протокола Kerberos.
Когда я пытаюсь получить доступ к приложению из Win7, и я ввожу неправильные учетные данные во всплывающем окне сообщения
- Приложение говорит, что аутентификация не удалась (это нормально)
В журнале ошибок Apache я вижу:
[error] [client 192.168.56.1] krb5_get_init_creds_password() failed: Client not found in Kerberos database
Но теперь я не могу получить возможность ввести действительные учетные данные, только после перезапуска IE я могу снова получить всплывающее окно.
Что может быть неправильным или отсутствующим в моей настройке Kerberos?
В каком-то посте блога я читал, что, вероятно, что-то нужно делать на стороне Active Directory. Что именно?
1 ответ
Тебе нужно KrbMethodNegotiate on
,
Без этого http-клиент, по сути, выполняет auth-basic для apache, и apache проверяет пароль против kdc.
Кроме того, ради безопасности вы должны установить KrbVerifyKDC on
,