Браузеры не отправляют токен аутентификации Kerberos на Linux - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь настроить аутентификацию 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 (что не должно ни на что повлиять, просто упоминание).

Я перепробовал все, что мог придумать, и часами гуглил, так что любые предложения о том, где копать дальше, были бы очень признательны.

...