Назад | Перейти на главную страницу

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

В простой настройке с использованием 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, и все работает нормально!