authGSSServerInit чрезвычайно медленно
Я реализую механизм единого входа для сервера Flask, работающего на Ubuntu 16.04, который проверяет подлинность пользователей на сервере Active Directory в домене Windows.
Когда я запускаю пример приложения из https://github.com/mkomitee/flask-kerberos/tree/master/example на сервере Flask я могу получить доступ к серверу Flask с клиентского компьютера, который вошел в систему, сервер правильно согласовывает доступ и возвращает имя вошедшего пользователя. Однако это очень важно. медленно, около двух минут.
Следуя шагам того, что происходит в flask-kerberos
, я обнаружил, что процесс останавливается на authGSSServerInit
Шаг . Я могу воспроизвести поведение, используя следующую минимальную программу:
import kerberos
rc, state = kerberos.authGSSServerInit("HTTP@flaskserver.mydomain.local")
Инициализация завершается успешно, но снова занимает около двух минут.
Я успешно зарегистрировал Service principal (HTTP/flaskserver.mydomain.local
) на сервере AD и экспортировал keytab на сервер Flask. Я могу получить билет, дающий билет на фляжку. сервер, использующий kinit -k HTTP/flaskserver.mydomain.local
. Я также могу проверить пароли в Python, используя библиотеку kerberos
:
import kerberos
kerberos.checkPassword('username', 'password', 'HTTP/flaskserver.mydomain.local', 'MYDOMAIN.LOCAL'
Это работает правильно и почти мгновенно.
Что может быть причиной задержки запуска kerberos.authGSSServerInit
? Как мне это отладить?
1 ответ:
Задержка была вызвана неудачным обратным поиском DNS для имени хоста.
host flaskserver
Правильно вернул IP, ноhost <ip-of-flaskserver>
вернул aHost <ip-of-flaskserver>.in-addr.arpa not found: 2(SERVFAIL)
.Как описано в https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html , отключение обратного поиска DNS в
krb5.conf
решило проблему:[libdefaults] rdns = false