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

Надеюсь, это поможет!

Другие вопросы по тегам