Я хочу использовать Kerberos и Apache 2 в Linux с mod_auth_kerb.
Я добавил .htaccess в свой проект следующим образом:
#SSLRequireSSL
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN.COM
Krb5KeyTab /etc/httpd/httpd.keytab
KrbLocalUserMapping On
require valid-user
Когда я пытался протестировать свой единый вход в IE или Firefox, я получаю следующую ошибку в журнале apache:
[Thu Jan 19 21:03:27 2012] [error] [client 10.65.0.1] gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
Я не знаю, что это такое и что мне делать, чтобы это работало.
Моя цель - заставить REMOTE_USER заполнить имя пользователя AD. Но теперь я ничего не могу сделать из-за этой ошибки ...
В простой настройке с использованием mod_auth_gssapi и FreeIPA в качестве сервера krb5 и для генерации вкладок ключей я обнаружил, что добавляя следующее рядом с AuthType
команда решила проблему.
BrowserMatch Windows gssapi-no-negotiate
Основываясь на ответе andsens, похоже, что это действительно происходит на клиентах Windows, которые пытаются использовать NTLM. GssapiAllowedMech krb5
и GssapiBasicAuthMech krb5
не приводят к успешному исходу переговоров, поэтому кажется, что единственное решение - отключить переговоры. Я не могу гарантировать, что это точно, но у меня это сработало.
Соответствующая документация есть Вот
Я обнаружил еще одну причину этой ошибки:
Windows пытается пройти аутентификацию с помощью NTLM. Собственно, в этом корень проблемы.
Я не понимаю, как помогло воссоздание keytab, тогда ошибка будет примерно такой: «Key table entry not found».
Windows пытается пройти аутентификацию через NTLM, когда не может получить билет от KDC.
Для меня причиной этого было то, что мой сервер не находился в той же области. Домен был ad.domain.com
, но мой сервер находился по адресу something.domain.com
. Я уверен, что вы тоже можете это как-то разрешить, но простое решение - просто изменить имя хоста, указывающее на сервер (а затем создать новую вкладку для этого домена).
Возникла проблема с руководителями. Я воссоздал /etc/httpd/httpd.keytab и правильно добавил принцип HTTP, и все работает нормально!