Я хотел бы сделать единый вход на сайт в моем окне Windows. Я использую модуль аутентификации Kerberos apache. Это работает довольно хорошо, когда есть только один веб-сайт.

Это текущая конфигурация:

Файл .htaccess:

RewriteEngine On
AuthType Kerberos
AuthName "Login"
KrbAuthRealms MY.DOMAIN.NAME
KrbServiceName HTTP/sub1.domain.com@MY.DOMAIN.NAME
Krb5Keytab /etc/mykeytab.keytab
KrbMethodK5Passwd on
KrbAuthoritative on
KrbMethodNegotiate on
Require valid-user

Чтобы это работало, мне нужно было создать файл keytab на контроллере Active Directory с помощью следующей команды:

ktpass -out c:\temp\mykeytab.keytab
    -princ HTTP/sub1.domain.com@MY.DOMAIN.NAME
    -mapUser user1
    -mapOp set 
    -pass secret
    -crypto AES256-SHA1 
    -pType KRB5_NT_PRINCIPAL

Как уже говорилось, до этого момента все работало довольно хорошо. Теперь для сложной части:

Я хотел бы иметь второй веб-сайт (vhost) на той же физической машине, которая использует того же пользователя Active Directory (user1). Мне все равно, нужно ли мне использовать другое имя участника-службы (SPN) или я могу использовать то же имя, что и раньше.

Новый сайт называется:

sub2.domain.com

и файл .htaccess

Файл .htaccess:

RewriteEngine On
AuthType Kerberos
AuthName "Login"
KrbAuthRealms MY.DOMAIN.NAME
KrbServiceName HTTP/sub2.domain.com@MY.DOMAIN.NAME
Krb5Keytab /etc/mykeytab2.keytab
KrbMethodK5Passwd on
KrbAuthoritative on
KrbMethodNegotiate on
Require valid-user

Я также создал новый файл keytab следующим образом:

ktpass -out c:\temp\mykeytab2.keytab
    -princ HTTP/sub2.domain.com@MY.DOMAIN.NAME
    -mapUser user1
    -mapOp add 
    -pass secret
    -crypto AES256-SHA1 
    -pType KRB5_NT_PRINCIPAL
    -in c:\temp\mykeytab1.keytab

Этот файл ключей теперь содержит оба имени участника-службы, сопоставленные с user1.

При открытии обоих веб-сайтов только sub1 все еще работает, sub2 выдает приглашение на вход в систему, то есть SSO не работает с sub2.

К сожалению, файлы журнала apache2 не содержат никакой связанной информации, хотя я использовал LogLevel debug .

Тем временем я обнаружил, что одной из моих проблем является номер версии ключа (kvno), который отличается в обеих таблицах ключей, а также в объединенном файле ключей. (Обе записи сохраняют свое первоначальное значение kvno, при этом старшая становится недействительной, как только новая становится активной ...) Есть ли способ иметь одно и то же kvno на обеих клавиатурах (или на обеих записях объединенной таблицы клавиш?). Кстати, соответствующее сообщение об ошибке журнала:

[auth_kerb:error] [pid 8222] [client 10.10.10.10:59840] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Key version number for principal in key table is incorrect)

Кто-нибудь знает, почему sub2 не работает правильно, а sub1 работает? ... а что я могу сделать, чтобы иметь такой же квнос?

Бест, ТомС

1 ответ1

0

Ваш KVNO (ключевой номер версии), кажется, не правильно. Если вы используете AD, вы можете создать таблицу ключей с помощью KVNO 255 (AD не использует KVNO). Вы можете включить отладку, как описано здесь: Устранение неполадок Kerberos, и если вы опубликуете содержимое файла трассировки, я смогу рассказать больше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .