Tôi hiện đang chạy một ứng dụng Node.js, với một API và các tập tin phục vụ (tôi biết nginx có thể xử lý nó, nhưng tôi đã không được sử dụng nó lúc đầu).Auth cơ bản và JWT
Tôi chỉ đơn giản sử dụng nó để có một xác thực cơ bản đơn giản, điều này không xảy ra đơn giản.
Dưới đây là cấu hình nginx tôi:
upstream nodejsapp {
server 127.0.0.1:1337;
keepalive 15;
}
server {
listen 80 default_server;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_redirect off;
location/{
proxy_pass http://nodejsapp;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
File /etc/nginx/.htpasswd
chỉ là user:encryptedpassword
và là tốt.
Với cấu hình này, khi tôi đi đến IP của tôi nó:
- hỏi tôi người dùng và mật khẩu
- bắt đầu để tải trang
- (đôi khi) yêu cầu một lần nữa cho người dùng và mật khẩu
- hoàn thành để tải trang
Cho đến giờ rất tốt, ngay cả khi nó đã hỏi mật khẩu gấp đôi.
Ứng dụng Node.js có xác thực JWT, khi tôi đăng nhập, trang web tải lại và từ đây, nó yêu cầu vô thời hạn cho người dùng và mật khẩu (auth cơ bản), miễn là tôi nhấp vào đăng nhập. JWT nằm trong bộ nhớ cục bộ của tôi. Nếu tôi nhấp vào hủy bỏ trên dấu nhắc auth cơ bản, JWT sẽ bị xóa và tôi đăng xuất, và nó ... yêu cầu một lần nữa cho auth cơ bản.
Đây là trên Chrome. Với Firefox và Safari, sau khi đăng nhập JWT, nó sẽ tự động xóa mã thông báo khỏi bộ nhớ cục bộ (và tôi đã đăng xuất).
Rất khó giải thích và tôi không thể hiển thị cho bạn trang web. Tóm lại, vấn đề chính là JWT (của ứng dụng node.js) bị xóa.
Tôi không chắc nó có thể trộn auth cơ bản và JWT. Tôi có thể sai, nhưng theo như tôi biết, cả hai phương pháp đều sử dụng tiêu đề yêu cầu 'Authorization', vì vậy không có gì đáng ngạc nhiên khi chúng bị nghi ngờ. – Curious
Vâng, sau khi một số nghiên cứu, tôi xác nhận nó có thể là vấn đề – Cohars
Đừng nghĩ rằng tôi có thể tìm thấy bất kỳ sửa chữa cho việc này. – Cohars