@alexandrsemen4ukk

Как заставить Django и Active Directory работать «правильно» с Kerberos?

Настраиваю ЛК согласно авторизации через 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. Как избежать запроса логина и пароля после того как браузер был закрыт? Я если честно не совсем понимаю как оно там под капотом работает, но ощущение что при авторизации создаётся тикет, который живёт до закрытия браузера.
66f542c137589241881893.jpeg

Так же прилагаю конфиг
/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
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы