Apache и Kerberos SSO с несколькими vhosts и несколькими SPN

843
TomS

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

Бест, ТомС

0

1 ответ на вопрос

0
SorinS

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

Похожие вопросы