我有一個Django應用程序,它位於Nginx後面,它需要用戶通過政府CAC(智能卡)進行身份驗證。 CAC ID由Nginx讀取並傳遞給Django,Django將該ID映射到Django用戶並登錄該用戶。這部分工作正常。如何讓NGINX/Django在CAC /智能卡被移除時檢測到?
但是,如果用戶將他/她的CAC從讀卡器中取出,應用程序仍然會愉快地移動,允許用戶繼續從該域加載頁面。
如何強制Nginx驗證每個頁面加載的CAC證書,以便一旦CAC被刪除,Django可以將用戶註銷並強制他們重新進行身份驗證?
Nginx的配置:
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;
}
}
很棒的比喻,謝謝你的解釋! – PaulP