I have an nginx http server which authenticates users and passes the authenticated request to a Flask app via wsgi. When I print the entire header from the flask app no user information is available.
Is it possible to get nginx to include the username in the request header?
Here is the server block with the authentication config...
server {
listen 80;
server_name notes.example.org;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443;
listen [::]:443;
include snippets/ssl-example.org.conf;
include snippets/ssl-params.conf;
server_name notes.example.org;
location / {
auth_basic "Restricted Content";
auth_basic_user_file /path/to/passwd/file;
include uwsgi_params;
uwsgi_pass unix:/path/to/wsgi/socket;
}
}
Request header as seen by the app running under wsgi...
Authorization: Basic **************==
Content-Length: 0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Dnt: 1
Host: notes.example.org
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.8
Content-Type:
Accept-Encoding: gzip, deflate, sdch, br
Here you are using http basic authentication option, after a successful feedback given by nginx server, browser sends a base64 of
username:password
. just use python base64 module to get username & password,