Kerberos Apache продолжает запрашивать бейсик
После очень долгой борьбы с аутентификацией Kerberos на моем веб-сайте, я наконец-то пришел к вам, потому что потерян. В настоящее время я создаю классический сайт PHP и хочу включить бесшовную аутентификацию с использованием Kerberos.
Итак, вот ситуация:
- У меня есть контроллер домена Windows 2012R2 с ролью KDC.
- У меня есть сервер Linux LAMP (fqdn =
webserver.domain.local
). - У меня есть мой веб-сайт, который размещен на сервере Linux и который доступен через HTTPS с таким именем:
site.domain.local
Я установил свою аутентификацию Kerberos в основном, следуя этим инструкциям: /questions/673976/apache-ispolzuyuschij-modauthkerb-vsegda-zaprashivaet-parol-dvazhdyi/673992#673992 (мой SPN HTTPS/site.domain.local@DOMAIN.LOCAL
)
Я также зарегистрировался site.domain.local
как "сайт интрасети" в настройках IE.
Когда я проверяю, работает ли аутентификация kerberos с веб-сервера с помощью kinit, аутентификация проходит успешно, но когда я захожу на site.domain.local со своего компьютера (который, конечно, связан с доменом), он предлагает мне пройти аутентификацию с BASIC. Я могу успешно войти в систему со своими учетными данными, но я предполагаю, что kerberos не работает должным образом, и я не понимаю, почему.
При доступе к сайту я получаю эту ошибку в логах апачей:
Ошибка gss_accept_sec_context(): запрошен неподдерживаемый механизм (неизвестная ошибка)
С включенным режимом отладки я получаю эти журналы:
kerb_authenticate_user, введенный с пользователем (NULL) и auth_type Kerberos
kerb_authenticate_user, введенный с пользователем (NULL) и auth_type Kerberos
Получение кредитов для HTTPS/site.domain.local@DOMAIN.LOCAL
Проверка данных клиента с использованием KRB5 GSS-API
Клиент не передал нам свои учетные данные
Предупреждение: полученным токеном является NTLM, который не поддерживается модулем Kerberos. Проверьте свою конфигурацию IE.
GSS-API major_status: 00010000, minor_status: 00000000
Я искал решение, и все с таким поведением решили его, поместив веб-сайт как "веб-сайт интрасети" в IE, но это уже сделано для меня...
У кого-нибудь есть идеи?
1 ответ
Ваш SPN неверен. Так должно быть HTTP/site.domain.local
- HTTP и HTTPS считаются одним и тем же классом обслуживания (HTTP).
- Вы не должны включать имя области в SPN (по крайней мере для Active Directory, не уверенный в других реализациях Kerberos).