Назад | Перейти на главную страницу

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, так и ie на 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)

Есть ли у кого-нибудь предложения относительно того, что мне нужно, чтобы это работало?

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

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