Настраиваю ЛК согласно авторизации через AD
по инструкции (Django, Apache2, Kerberos, только у меня Бубунта), она немного устарела, но в целом процесс правильный за исключением библиотек, которые используются. Вроде бы всё получилось, но дико бесит один момент:
Даже из машины и аккаунта в домене всё равно при первом переходе на сайт просит ввести логин и пароль (я так понимаю этого хочет apache2)
конфиг апачаWSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess lk.my.site python-path=/var/www/lk.my.site python-home=/var/www/lk.my.site/django-env
WSGIProcessGroup lk.my.site
WSGIScriptAlias / /var/www/lk.my.site/djangoapp/wsgi.py
<VirtualHost *:80>
AddDefaultCharset UTF-8
ServerAdmin semenchuk@my.site
ServerName lk.my.site
DocumentRoot /var/www/lk.my.site
ErrorLog ${APACHE_LOG_DIR}/lk.my.site/error.log
CustomLog ${APACHE_LOG_DIR}/lk.my.site/access.log combined
# <Location /login/>
# AuthType None
# Require all granted
# </Location>
Alias /static /var/www/lk.my.site/static
<Directory /var/www/lk.my.site/static>
Require all granted
</Directory>
Alias /media /var/www/lk.my.site/media
<Directory /var/www/lk.my.site/media>
Require all granted
</Directory>
# Настройка аутентификации через Kerberos для всего приложения
<Location / >
# Kerberos authentication:
AuthType Kerberos
AuthName "LK.my.site auth"
KrbMethodNegotiate on
# KrbMethodK5Passwd on
KrbServiceName HTTP/lk.my.site@my.site
KrbAuthRealms my.site
Krb5Keytab /etc/krb5.keytab
KrbSaveCredentials on
KrbLocalUserMapping On
Require valid-user
RequestHeader set REMOTE_USER %{REMOTE_USER}s
# Require all granted
</Location>
<Directory /var/www/lk.my.site/djangoapp>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /var/www/lk.my.site>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
После авторизации открывает сайт и до тех пор пока не закрыть браузер авторизация остаётся активной. Даже если я вручную выполняю logout, то меня автоматически перелогинивает через Kerberos. Как избежать запроса логина и пароля после того как браузер был закрыт? Я если честно не совсем понимаю как оно там под капотом работает, но ощущение что при авторизации создаётся тикет, который живёт до закрытия браузера.
Так же прилагаю конфиг
/etc/krb5.conf[libdefaults]
default_realm = MY.SITE
default_ccache_name = KEYRING:persistent:%{uid}
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
rdns = false
# The following krb5.conf variables are only for MIT Kerberos.
# kdc_timesync = 1
# ccache_type = 4
forwardable = true
# proxiable = true
# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# The only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).
# default_tgs_enctypes = des3-hmac-sha1
# default_tkt_enctypes = des3-hmac-sha1
# permitted_enctypes = des3-hmac-sha1
# The following libdefaults parameters are only for Heimdal Kerberos.
# fcc-mit-ticketflags = true
[realms]
MY.SITE = {
kdc = 192.168.101.37
admin_server = 192.168.101.37
}
[domain_realm]
.my.site = MY.SITE
my.site = MY.SITE
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log