Apache2, Kerberos: сбой gss_accept_sec_context(): запрошен неподдерживаемый механизм

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

3 ответа

Решение

Была проблема с принципалами. Я пересоздал /etc/httpd/httpd.keytab и правильно добавил принципал HTTP, и все работает отлично!

В простой настройке, используя mod_auth_gssapi и FreeIPA в качестве сервера krb5 и для создания ключей, я обнаружил, что добавление следующего рядом с AuthType Команда обратилась к проблеме.

BrowserMatch Windows gssapi-no-negotiate

Судя по ответу andsens, похоже, что это действительно происходит на клиентах Windows, которые пытаются использовать NTLM. GssapiAllowedMech krb5 а также GssapiBasicAuthMech krb5 не дают успешных результатов переговоров, поэтому, похоже, единственным решением является отключение переговоров. Я не могу гарантировать, что это точно, но это сработало для меня.

Соответствующая документация здесь

Я обнаружил еще одну причину этой ошибки:
Windows пытается аутентифицироваться с NTLM. На самом деле это корень проблемы.

Я не понимаю, как помогло воссоздание таблицы ключей, тогда ошибка будет выглядеть примерно так: "Запись таблицы ключей не найдена".
Windows пытается пройти аутентификацию через NTLM, когда не может получить билет от KDC.
Для меня причина этого состояла в том, что мой сервер не был расположен в той же области. Домен был ad.domain.com, но мой сервер был расположен в something.domain.com, Я уверен, что вы можете разрешить это как-нибудь, но простое решение - просто изменить имя хоста, указывающее на сервер (и затем создать новую таблицу ключей для этого домена).

Другие вопросы по тегам