mod_auth_kerb может сделать две вещи:
Подскажите пользователю ввести имя пользователя и пароль с помощью HTTP Basic и проверять их с помощью Kerberos на стороне сервера, или
Разрешить браузер для проверки подлинности с помощью Kerberos с обеих сторон, через HTTP Negotiate. Если клиент поддерживает Kerberos, это обеспечивает одномодовый вход в систему: клиент автоматически выполняет проверку подлинности на сервер через систему Kerberos без запроса пароля, с помощью учетных данных, полученных при регистрации пользователя в
Вы делаете # 1. в вашем приложении. Возможно, было бы полезно перенести это в Apache, где это можно сделать единожды для всех приложений. # 2 вы вообще ничего не делаете, но это полезно только в среде, в которой доступна инфраструктура Kerberos.
Предупреждение: я не знаю о «модуле kerberos Python», но очень возможно, что он не делает проверку пароля надежным. Многие вещи, которые утверждают, что делают это, делают эквивалент «kinit»: они используют имя пользователя и пароль для получения первоначальных учетных данных Kerberos (TGT) и добиваются успеха, если он работает. Проблема в том, что они попросили стороннюю компанию (сервер аутентификации Kerberos (центр распространения ключей) или KDC) проверить пароль - но они не проверили, что они действительно разговаривают с реальным KDC. Они могли просто получить сообщение от того же пользователя, который дал им пароль, и в сообщении, конечно, сказано: «пароль прав». Чтобы сделать это правильно, верификатору нужна его собственная идентичность в царстве Kerberos («главный») и сделать дополнительный шаг использования TGT, чтобы получить билет для себя и проверить его; это гарантирует, что ответ получен от подлинного KDC.
Другим распространенным способом сделать это, если ваши KDC являются контроллеры домена Windows, является использование LDAP: подключение к контроллеру домена через LDAP и аутентификация с помощью пароля; DC проверит пароль на самом Kerberos. Конечно, у вас такая же проблема: вам нужно проверить, что вы разговариваете с подлинным контроллером домена, но вы можете сделать это с помощью TLS через сертификаты, что может быть проще.
Благодарим за предложение LDAP. Я продвигаюсь с помощью аутентификации LDAP с использованием модуля python-ldap. – g4ur4v