У меня есть приложение Django, которое стоит за Nginx и требует от пользователя аутентификации через правительственный CAC (смарт-карту). Идентификатор CAC считывается Nginx и передается Django, который сопоставляет этот идентификатор с пользователем Django и регистрирует этого пользователя. Эта часть работает нормально.
Однако, если пользователь удаляет свой CAC из кард-ридера, приложение продолжает работать, позволяя пользователю продолжать загружать страницы из этого домена.
Как я могу заставить Nginx проверять сертификат CAC при каждой загрузке страницы, чтобы после удаления CAC Django мог выйти из системы пользователя и заставить его повторно пройти аутентификацию?
Конфиг нгинкс:
server {
listen 443 ssl;
server_name my-server;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_verify_client on;
ssl_verify_depth 2;
ssl_client_certificate /etc/ssl/certs/dod-root-certs.pem;
location /static/ {
alias /etc/nginx/static/;
expires 30d;
}
location / {
proxy_pass http://localhost:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol ssl;
proxy_set_header X-SSL-User-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Authenticated $ssl_client_verify;
proxy_connect_timeout 60;
proxy_read_timeout 60;
}
}