Điểm:0

Gỡ lỗi xác thực của bên thứ ba trong localhost với docker và nginx

lá cờ kr

Chúng tôi có một trang web nơi chúng tôi vừa thêm xác thực của bên thứ ba như Google, Twitter. Tôi đang thử kiểm tra các xác thực này trong máy chủ cục bộ (MacOS).

Tôi đang chạy docker để chạy nginx, đây là docker-compose-dev.xml

phiên bản: "3"
dịch vụ:
  https:
    hình ảnh: bitnami/nginx: mới nhất
    khởi động lại: trừ khi dừng
    cổng:
      - 443:443/tcp
    khối lượng:
      - ./conf.d/dev.conf:/opt/bitnami/nginx/conf/server_blocks/default.conf:ro
    extra_hosts:
      - "host.docker.internal:host-gateway"

Và đây là conf.d/dev.conf:

ngược dòng funfun {
   máy chủ 178.62.87.72:443;
}
người phục vụ {
    nghe 443 ssl;
    máy chủ_tên máy chủ cục bộ;
    ssl_certificate /certs/server.crt;
    ssl_certificate_key /certs/server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    bật ssl_prefer_server_ciphers;
    ssl_session_timeout 1d;
    tắt ssl_dập ghim;
    tắt ssl_stapling_verify;
    add_header Strict-Transport-Security max-age=15768000;
    add_header X-Frame-Options "";
    proxy_ssl_name "www.funfun.io";
    proxy_ssl_server_name bật;
    vị trí ~ /xã hộiĐăng nhậpSuccess {
        viết lại ^ '/#/socialLoginSuccess' chuyển hướng;
     }
    vị trí ~ /auth/(.*) {
        proxy_pass https://funfun/10studio/auth/$1?$query_string;
        proxy_set_header Máy chủ lưu trữ cục bộ;
     }
    địa điểm / {
        proxy_set_header Máy chủ lưu trữ $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Mã hóa chấp nhận "";
        proxy_set_header Proxy "";
        proxy_pass http://host.docker.internal:3000/;
        # Ba dòng này được thêm vào theo https://github.com/socketio/socket.io/issues/1942 để xóa lỗi socketio
        proxy_http_version 1.1;
        proxy_set_header Nâng cấp $http_upgrade;
        proxy_set_header Kết nối "nâng cấp";
    }
}

Cách chúng tôi khởi chạy ứng dụng là sudo PORT=8000 HTTPS=true ./node_modules/.bin/react-scripts bắt đầu. sau đó https://localhost:8000/#/sign trong trình duyệt sẽ mở trang có các nút xác thực.

Url của nút liên kết với xác thực Google là https://localhost/10studio/auth/google. Bằng cách nhấp vào nó, tôi thấy đầu tiên https://localhost/10studio/auth/google trong thanh địa chỉ của trình duyệt, nhưng trang nhập Google ID và mật khẩu không xuất hiện, vài giây sau, url trở thành https://localhost/#/socialLoginSuccess, và trang hiển thị 502 Cổng Xấu. Tôi thấy các bản ghi sau trong thiết bị đầu cuối đang chạy nginx:

$ docker-compose --f docker-compose-dev.yml lên
CẢNH BÁO: Đã tìm thấy vùng chứa mồ côi (frontend_10studio_1, frontend_frontend_1) cho dự án này. Nếu bạn đã xóa hoặc đổi tên dịch vụ này trong tệp soạn thảo của mình, bạn có thể chạy lệnh này với cờ --remove-orphans để dọn dẹp dịch vụ.
Đang bắt đầu frontend_https_1 ... xong
Đang đính kèm vào frontend_https_1
https_1 | nginx 21:24:05.37 
https_1 | nginx 21:24:05.38 Chào mừng bạn đến với bộ chứa Bitnami nginx
https_1 | nginx 21:24:05.38 Đăng ký cập nhật dự án bằng cách xem https://github.com/bitnami/bitnami-docker-nginx
https_1 | nginx 21:24:05.39 Gửi các vấn đề và yêu cầu tính năng tại https://github.com/bitnami/bitnami-docker-nginx/issues
https_1 | nginx 21:24:05.39 
https_1 | nginx 21:24:05.39 THÔNG TIN ==> ** Bắt đầu thiết lập NGINX **
https_1 | nginx 21:24:05.42 THÔNG TIN ==> Xác thực cài đặt trong NGINX_* env vars
https_1 | nginx 21:24:05.43 THÔNG TIN ==> Đang khởi tạo NGINX
https_1 | realpath: /bitnami/nginx/conf/vhosts: Không có tệp hoặc thư mục như vậy
https_1 | 
https_1 | nginx 21:24:05.45 THÔNG TIN ==> ** Quá trình thiết lập NGINX đã hoàn tất! **
https_1 | nginx 21:24:05.47 THÔNG TIN ==> ** Bắt đầu NGINX **
https_1 | 172.19.0.1 - - [08/Nov/2021:21:25:06 +0000] "GET /10studio/auth/google HTTP/1.1" 302 0 "https://localhost:8000/" "Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/Nov/2021:21:25:07 +0000] "GET /auth/google/callback?code=4%2F0AX4XfWiqleRl2StBpNOgOtzjqZlftvq9-uDmiPVLZqcgo2xjjhohu47iAV5qxoJThaQYzg&scope=email+profile+https%2Fwww.googleFap .com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+openid&authuser=0&prompt=none HTTP/1.1" 302 82 "https://localhost:8000/" "Mozilla /5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/Nov/2021:21:25:07 +0000] "GET /auth/signinSuccess HTTP/1.1" 302 82 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/Nov/2021:21:25:07 +0000] "GET /socialLoginSuccess HTTP/1.1" 302 138 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 2021/11/08 21:25:39 [lỗi] 27#27: *2 connect() fail (110: Hết thời gian kết nối) trong khi kết nối với thượng nguồn, máy khách: 172.19.0.1, máy chủ: localhost, yêu cầu: "NHẬN / HTTP/1.1", ngược dòng: "http://192.168.65.1:3000/", máy chủ lưu trữ: "localhost", liên kết giới thiệu: "https://localhost:8000/"
https_1 | 172.19.0.1 - - [08/Nov/2021:21:25:39 +0000] "GET / HTTP/1.1" 502 552 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"

Có ai biết có gì sai ở đây không?

Ngoài ra, khi tôi gỡ lỗi nginx, nó giống như một hộp đen đối với tôi. Tôi thực sự muốn có thể theo dõi và xem url nào đi vào khối vị trí nào và thay đổi thành url nào (bởi proxy_pass hoặc viết lại, vân vân.). Có ai có cách nào tốt hơn để gỡ lỗi hoặc đăng nhập không?

lá cờ ws
Tôi không quen với việc xử lý certbot của docker, nhưng letencrypt sẽ không cấp chứng chỉ có tên máy chủ 'localhost'.
lá cờ kr
@symcbean bạn nói đúng, bây giờ tôi sử dụng một hình ảnh docker khác.
dirkt avatar
lá cờ in
Các phương pháp gỡ lỗi chung (mà bạn có thể đã có bây giờ): (1) Sử dụng tab mạng trong các công cụ dành cho nhà phát triển cho trình duyệt của bạn (Safari hoặc cách khác), nó sẽ hiển thị cụ thể cho bạn đích mới của 302, vì vậy bạn có thể hiểu thêm về những gì tiếp tục trong dòng chảy. (2) Sử dụng proxy trung gian ghi nhật ký, ví dụ: [mitmproxy](https://mitmproxy.org), ở chế độ proxy trong suốt nếu cần. (3) Về nguyên tắc, bạn cũng có thể đặt một mitproxy giữa nginx và dịch vụ của mình.
dirkt avatar
lá cờ in
Và tôi không hiểu cách bạn muốn ghi lại các chuyển hướng OAuth thông thường với thiết lập proxy của mình, vì vậy tôi không thể nhận xét lý do tại sao nó không hoạt động. Đối với OAuth bình thường, bạn không cần phải làm gì đặc biệt.

Đă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.