Ошибка gss_init_sec_context (): сервер HTTP / hostname@realm не найден в базе данных Kerberos - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь реализовать аутентификацию на основе Kerberos с использованием Flask REST API. Для выполнения sh этого я использую библиотеку Python flask_kerberos.

Я интегрировал библиотеку, как показывает имеющаяся документация:

@app.route("/log")
@requires_authentication
def get(user):
   ... code

if __name__ == '__main__':
    init_kerberos(app,service=settings.service,hostname=settings.hostname)
    app.run(host='0.0.0.0',port=settings.api_port,debug=settings.debug_mode,ssl_context=context)

Обратите внимание, что настройки Переменная выше содержит переменные, загруженные из файла конфигурации, и что эти переменные загружаются правильно. Библиотеке flask_kerberos также необходимо установить KRB5_KTNAME в расположение keytab, и это также предоставляется файлом конфигурации.

При запуске приложения все идет хорошо, и из журналов flask_kerberos я вижу, что основной загружен - правильный, предварительно загруженный из файла конфигурации и соответствующий keytab.

INFO in flask_kerberos: Kerberos: server is service/hostname@realm

Несмотря на это, при отправке запроса с завитком в режиме отладки:

curl -k -v -d '{"int_id":"id0000","process_id":0}' -H "Content-Type: application/json" --negotiate -u : -b ~/cookiejar.txt -X GET https://localhost:8088/log

Во время отладки я вижу, что gss_init_sec_context () не удалось:

gss_init_sec_context() failed: : Server HTTP/localhost@realm not found in Kerberos database

Это происходит потому, что flask_kerberos вместо использования настроек, которые я передал в функцию init_kerberos (загружается из файла конфигурации ) переопределяет их значениями по умолчанию «HTTP» и любым именем хоста, отправленным в curl. Однако используемая область является правильной.

Обратите внимание, что я уже пробовал использовать другую библиотеку: flask_gssapi. Однако проблема все еще не устранена.

Мой вопрос: можете ли вы изменить службу и имя хоста, используемые flask_kerberos (это так кажется исходным кодом библиотеки), или библиотека всегда переопределяет значения по умолчанию: service = 'HTTP 'и hostname = gethostname ()?

...