我有一个位于 Nginx 后面的 Django 应用程序,它要求用户通过政府 CAC(智能卡)进行身份验证。CAC ID 由 Nginx 读取并传递给 Django,后者将该 ID 映射到 Django 用户并登录该用户。那部分工作正常。
但是,如果用户从读卡器中删除他/她的 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;
}
}