Мне нужна проверка подлинности приложения Ruby on Rail через Active Directory с использованием проверки подлинности Kerberos.
В /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, и там стоит галочка «Enable Integrated Windows Authentication».
Почему 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. Что именно?
Тебе нужно KrbMethodNegotiate on
.
Без этого http-клиент по существу выполняет auth-basic для apache, а apache проверяет пароль на kdc.
Кроме того, в целях безопасности вам действительно следует установить KrbVerifyKDC on
.