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