SSO с проблемами Apache и Kerberos
Я пытаюсь настроить единый вход на своем веб-сервере Apache, используя Kerberos, чтобы пользователи, вошедшие в локальный домен, распознавались и сразу входили в систему.
Я следовал этому руководству к письму, но не могу избавиться от приглашения пользователя / пароля после того, как все настроено.
Я использую Ubuntu 8.04, установил mod_auth_kerb 5.4 для Apache.
Мой /etc/krb5.conf:
[libdefaults]
default_realm = COMPANY.LOCAL
[domain_realm]
.company.local = COMPANY.LOCAL
company.local = COMPANY.LOCAL
[realms]
COMPANY.LOCAL = {
default_domain = company.local
kdc = DC01.COMPANY.LOCAL:88
admin_server = DC01.COMPANY.LOCAL
}
Моя конфигурация Apache:
<Location />
AuthType Kerberos
AuthName "server login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms COMPANY.LOCAL
KrbServiceName HTTP
Krb5KeyTab /etc/apache2/httpd.keytab
KrbVerifyKDC off
KrbLocalUserMapping on
require valid-user
</Location>
Keytab был сгенерирован нашим администратором с помощью
ktpass -princ HTTP/hostname.company.local@COMPANY.LOCAL -mapuser hostname -crypto rc4-hmac-nt -ptype KRB5_NT_SRV_HST -pass CHOOSEPASSWORD -out httpd.keytab
Я выполнил соответствующие команды chmod/chown. На сервере я успешно оформил kinit HTTP/hostname.company.local@COMPANY.LOCAL
и залогинился.
kvno
/ klist
выход:
# kvno HTTP/hostname.company.local@COMPANY.LOCAL
HTTP/hostname.company.local@COMPANY.LOCAL: kvno = 8
# klist -ke httpd.keytab
Keytab name: FILE:httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
8 HTTP/hostname.company.local@COMPANY.LOCAL (ArcFour with HMAC/md5)
Я настроил свой браузер (пробовал и ff, и т. Е. На windows7) для передачи учетных данных, чтобы, надеюсь, избавиться от приглашения, но он не работает.
Журналы ошибок Apache говорят:
[error] [client 10.0.0.1] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Key version number for principal in key table is incorrect)
[error] [client 10.0.0.1] gss_accept_sec_context() failed: Invalid token was supplied (, No error)
Кто-нибудь получил какие-либо предложения относительно того, что мне нужно, чтобы это работало?
1 ответ
Если я правильно интерпретирую ошибку, я думаю, это означает, что у вас есть старая версия ключа в /etc/apache2/httpd.keytab. Каждый раз, когда ключ изменяется для участника Kerberos через kadmin, номер версии увеличивается, а более старые версии этого ключа становятся недействительными.
kinit
Команда /login только показывает, что ключ хоста в /etc/krb5.keytab не поврежден. Это не обязательно означает, что kvno внутри httpd.keytab действителен, и вам нужно будет проверить его в KDC.
Начните сеанс kadmin против вашего KDC и вызовите getprinc <principalname>
, Найдите "Key: vno", это говорит о том, что KDC считает номером версии. Если в KDC установлена более поздняя версия ключа, необходимо повторно экспортировать этот ключ на соответствующий хост. Я хотел бы проверить правильность всех ключей в /etc/krb5.keytab, пока вы работаете над этим, просто чтобы убедиться, что других бомб замедленного действия не скрывается.
Надеюсь, это поможет!