Điểm:0

xác thực yêu cầu phụ nginx không hoạt động như mong đợi

lá cờ ws

Tôi muốn thêm các điều khiển truy cập vào toàn bộ vhost trên một proxy ngược. Tôi đang sử dụng xác thực yêu cầu phụ nginx để thực hiện việc này. Tương tác dự kiến ​​là người dùng sẽ nhận được thông báo lỗi có liên kết đến trang đăng nhập hoặc trang đăng nhập được hiển thị tại URL được yêu cầu. Khi hoàn tất quá trình đăng nhập, sẽ có một số cơ chế để người dùng điều hướng/tải lại URL được yêu cầu ban đầu. Bản thân proxy ngược (tức là không có PHP) không có khả năng tạo tập lệnh, điều này giới hạn các tùy chọn để chụp và truyền URL gốc thông qua quy trình xác thực.

Kỳ vọng của tôi: nếu yêu cầu xác thực không thành công (tức là http://authprovider.example.com:8081/gateway/index.php trả về 401) Tôi muốn nội dung cụ thể được trả về tại URL được yêu cầu mà không cần chuyển hướng và có trạng thái 4xx.

người phục vụ {
    nghe 80;
    server_name www.example.com;
    gốc/var/www/html;

    error_page 401 iprestricted.html;
    ## Điều này cung cấp phản hồi cho người dùng khi yêu cầu không được phép
    ## (bao gồm một liên kết để đăng nhập)
    # vị trí /iprestricted.html {
    # try_files $uri $uri/ =404;
    # }

    # Điều này thực hiện kiểm tra yêu cầu phụ....
    vị trí /hạn chế {
            nội bộ;
            proxy_pass http://authprovider.example.com:8081/gateway/index.php ;
            tắt proxy_pass_request_body;
            proxy_set_header Độ dài nội dung "";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Original-URI $request_uri;
    }
    địa điểm / {
            auth_request/bị hạn chế;
            proxy_pass http://localwebserver/;
    }
}

Tuy nhiên:

Nếu vị trí /iprestricted.html{...} được nhận xét, tôi nhận được một vòng lặp chuyển hướng tại http://www.example.com

Nếu nó không được ghi chú, thì bất kỳ yêu cầu nào cũng nhận được phản hồi 302 với Vị trí /iprestricted.html trả về mã trạng thái 200

Làm cách nào để triển khai xác thực yêu cầu phụ mà không cần chuyển hướng?

Có cách nào khác để nắm bắt URL gốc và chuyển URL này qua bước xác thực chỉ bằng cách sử dụng cấu hình nginx không?

Tôi đã thử thêm add_header WWW-Xác thực "Vương quốc cơ bản=bipdevtest"; trong mỗi và cả hai vị trí trên nhưng điều này không được gửi lại trong phản hồi HTTP.

Điểm:0
lá cờ ws

Luôn luôn là một ý tưởng tốt để RTFM

Nginx sẽ chuyển tiếp tiêu đề WWW-Authenticate nếu nó được nhà cung cấp auth_request trả về (http://authprovider.example.com:8081/gateway/index.php ở trên).

Tuy nhiên, tôi sẽ để câu hỏi mở vì tôi bối rối/lo lắng về trang lỗi tùy chỉnh dẫn đến chuyển hướng 302 theo sau là phản hồi 200.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.