Использование Kerberos для аутентификации приложения Django в корпоративной среде

Я пытаюсь использовать Kerberos и LDAP3 для аутентификации моего Django-приложения внутри корпоративной сети. Когда я вхожу на свой корпоративный компьютер, я хочу, чтобы мое приложение могло войти в систему без необходимости снова вводить имя пользователя и пароль. Я понял, что это можно сделать с помощью Kerberos, но не смог найти исчерпывающего документа по этому поводу. Сейчас я использую аутентификацию ldap3, где пользователь должен ввести имя пользователя и пароль, но я хочу пропустить процесс ввода имени пользователя и пароля. Как я могу это сделать?

Kerberos over HTTP использует SPNEGO (часть GSSAPI). Существует множество способов его реализации:

  • Использование веб-сервера (например, Apache имеет mod_auth_gssapi, IIS имеет "Integrated Windows Auth");
  • Использование промежуточного ПО WSGI/ASGI (например, wsgi-kerberos или asgi-gssapi);
  • В рамках Django (например, я нашел django_gss_spnego на GitHub, и кажется, что он должен работать).

Во всех случаях приложение должно иметь учетные данные Kerberos для HTTP/appdomain.example.com - для Windows AD это означает создание учетной записи пользователя "service" для приложения, назначение ей "HTTP/..." SPN, и (обычно) экспортировать keytab для этой учетной записи.

Строго говоря, LDAP вообще не участвует в процессе аутентификации Kerberos. LDAP нужен только для поиска дополнительных сведений о пользователе после аутентификации. (SPNEGO дает вам имя принципала Kerberos, которое вы можете найти как sAMAccountName - не userPrincipalName - в AD через LDAP.)

Вернуться на верх