Я пытаюсь настроить аутентификацию Kerberos для разрабатываемого мной приложения. При открытии приложения из браузера (Chrome или FF) я получаю ответ 401 от сервера с заголовком WWW-Authenticate: Negotiate, но браузеры не отправляют токен согласования обратно на сервер.
Подробности
Моя платформа: Linux Mint
У меня есть билет для моего пользователя с использованием
kinit myusername@MYREALM.RU
Я могу подтвердить, что билет действителен с помощью klist
.
Если это уместно, myusername
для области отличается от моего linux имени пользователя.
Я установил network.negotiate-auth.trusted-uris
и network.negotiate-auth.delegation-uris
в Firefox на sd.mydomain.ru
(Еще пробовал .mydomain.ru
, http://sd.mydomain.ru
). Я также установил network.negotiate-auth.allow-non-fqdn
на true
.
Открытие sd.mydomain.ru:8000
отправляет запрос AJAX на sd.mydomain.ru:8000/accounts/kerberos/login/
, который отвечает кодом 401 и заголовком WWW-Authenticate. Послесловия ничего не происходит.
Я пытался установить
$ export NSPR_LOG_MODULES=negotiateauth:5
$ export NSPR_LOG_FILE=/tmp/moz.log
, затем запустил Firefox с этой консоли. После открытия страницы журнал пуст.
Я пробовал использовать Chrome, запустив его как
google-chrome --auth-server-whitelist="sd.mydomain.ru:8000"
с тем же эффектом, что и в Firefox (401 ответ от сервера , и ничего не происходит).
Дополнительные сведения
Если это может помочь, мое приложение - это приложение Django, использующее библиотеку django -kerberos. Он использует файл keytab, полученный при выполнении команды (на Windows)
ktpass -princ HTTP/sd.mydomain.ru@MYREALM.RU -ptype KRB5_NT_PRINCIPAL -out django.keytab
Файл был создан с предупреждением:
For the account to work withing a Windows domain, the principal must be
mapped to an account, either at the domain level (with /mapuser) or
locally (using ksetup)
If you intend to map HTTP/sd.mydomain.ru@MYREALM.RU to an acoount through
other means or don't need to map the user, this message can safely be ignored.
WARNING: pType and account type do not match. This might cause problems.
Инструкция для настройки django -kerberos не упоминает сопоставление пользователей, поэтому я предположил, что это не нужно.
Чтобы протестировать свое приложение, я сохранил файл keytab локально и запустил приложение, используя этот файл. Я отредактировал /etc/hosts
, чтобы направить ed.mydomain.ru
на 127.0.0.1.
Кроме того, я подключаюсь к KD C через VPN (что не должно ни на что повлиять, просто упоминание).
Я перепробовал все, что мог придумать, и часами гуглил, так что любые предложения о том, где копать дальше, были бы очень признательны.