Score:0

ดีบักการรับรองความถูกต้องของบุคคลที่สามใน localhost ด้วย docker และ nginx

ธง kr

เรามีเว็บไซต์ที่เราเพิ่งเพิ่มการรับรองความถูกต้องของบุคคลที่สาม เช่น Google, Twitter ฉันกำลังพยายามทดสอบการรับรองความถูกต้องเหล่านี้ใน localhost (MacOS)

ฉันใช้นักเทียบท่าเพื่อเรียกใช้ nginx นี่คือ นักเทียบท่า-compose-dev.xml

รุ่น: "3"
บริการ:
  https:
    รูปภาพ: bitnami/nginx:latest
    รีสตาร์ท: เว้นแต่จะหยุด
    พอร์ต:
      - 443:443/tcp
    ปริมาณ:
      - ./conf.d/dev.conf:/opt/bitnami/nginx/conf/server_blocks/default.conf:ro
    extra_hosts:
      - "host.docker.internal:host-gateway"

และนี่คือ conf.d/dev.conf:

ต้นน้ำ funfun {
   เซิร์ฟเวอร์ 178.62.87.72:443;
}
เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    server_name localhost;
    ssl_certificate /certs/server.crt;
    ssl_certificate_key /certs/server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    เปิด ssl_prefer_server_ciphers;
    ssl_session_timeout 1d;
    ปิด ssl_stapling;
    ปิด ssl_stapling_verify;
    add_header การขนส่งที่เข้มงวด - ความปลอดภัยสูงสุดอายุ = 15768000;
    add_header X-Frame-ตัวเลือก "";
    proxy_ssl_name "www.funfun.io";
    เปิด proxy_ssl_server_name;
    ตำแหน่ง ~ /socialLoginSuccess {
        เขียนใหม่ ^ '/#/socialLoginSuccess' เปลี่ยนเส้นทาง;
     }
    ตำแหน่ง ~ /auth/(.*) {
        proxy_pass https://funfun/10studio/auth/$1?$query_string;
        proxy_set_header โฮสต์ localhost;
     }
    ที่ตั้ง / {
        proxy_set_header โฮสต์ $host;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header ยอมรับการเข้ารหัส "";
        proxy_set_header พร็อกซี "";
        proxy_pass http://host.docker.internal:3000/;
        # สามบรรทัดนี้เพิ่มตาม https://github.com/socketio/socket.io/issues/1942 เพื่อลบข้อผิดพลาด socketio
        proxy_http_version 1.1;
        proxy_set_header อัพเกรด $http_upgrade;
        proxy_set_header การเชื่อมต่อ "อัพเกรด";
    }
}

วิธีที่เราเปิดตัวแอปคือ sudo PORT=8000 HTTPS=true ./node_modules/.bin/react-scripts เริ่มต้น. แล้ว https://localhost:8000/#/sign ในเบราว์เซอร์จะเปิดหน้าที่มีปุ่มยืนยันตัวตนอยู่

URL ของปุ่มที่เชื่อมโยงไปยังการรับรองความถูกต้องของ Google คือ https://localhost/10studio/auth/google. เมื่อคลิกที่มัน ฉันเห็นก่อน https://localhost/10studio/auth/google ในแถบที่อยู่ของเบราว์เซอร์ แต่ไม่ปรากฏหน้าสำหรับป้อน Google ID และรหัสผ่าน จากนั้นหลายวินาทีต่อมา URL ดังกล่าวก็กลายเป็น https://localhost/#/socialLoginSuccessและหน้าจะแสดง 502 เกตเวย์เสีย. ฉันเห็นบันทึกต่อไปนี้ในเทอร์มินัลที่ใช้งาน nginx:

$ docker-compose --f docker-compose-dev.yml ขึ้น
คำเตือน: พบ orphan containers (frontend_10studio_1, frontend_frontend_1) สำหรับโครงการนี้ หากคุณลบหรือเปลี่ยนชื่อบริการนี้ในไฟล์เขียน คุณสามารถรันคำสั่งนี้ด้วยแฟล็ก --remove-orphans เพื่อล้างข้อมูล
กำลังเริ่มต้นส่วนหน้า_https_1 ... เสร็จแล้ว
กำลังแนบกับส่วนหน้า_https_1
https_1 | nginx 21:24:05.37 
https_1 | nginx 21:24:05.38 ยินดีต้อนรับสู่คอนเทนเนอร์ Bitnami nginx
https_1 | nginx 21:24:05.38 สมัครรับข้อมูลอัปเดตโครงการโดยดู https://github.com/bitnami/bitnami-docker-nginx
https_1 | nginx 21:24:05.39 ส่งปัญหาและคำขอฟีเจอร์ที่ https://github.com/bitnami/bitnami-docker-nginx/issues
https_1 | nginx 21:24:05.39 
https_1 | nginx 21:24:05.39 ข้อมูล ==> ** กำลังเริ่มการตั้งค่า NGINX **
https_1 | nginx 21:24:05.42 INFO ==> ตรวจสอบการตั้งค่าใน NGINX_* env vars
https_1 | nginx 21:24:05.43 ข้อมูล ==> กำลังเริ่มต้น NGINX
https_1 | realpath: /bitnami/nginx/conf/vhosts: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
https_1 | 
https_1 | nginx 21:24:05.45 ข้อมูล ==> ** การติดตั้ง NGINX เสร็จสิ้น! **
https_1 | nginx 21:24:05.47 ข้อมูล ==> ** กำลังเริ่ม 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 (แมคอินทอช ; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/พ.ย./2021:21:25:07 +0000] "GET /auth/google/callback?code=4%2F0AX4XfWiqleRl2StBpNOgOtzjqZlftvq9-uDmiPVLZqcgo2xjjhohu47iAV5qxoJThaQYzg&scope=email+profile+https%Fap%googleis .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 เช่น 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 เช่น 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 เช่น Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 11/08/2021 21:25:39 [ข้อผิดพลาด] 27#27: *2 การเชื่อมต่อ() ล้มเหลว (110: การเชื่อมต่อหมดเวลา) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอ็นต์: 172.19.0.1 เซิร์ฟเวอร์: localhost คำขอ: "GET / HTTP/1.1", อัพสตรีม: "http://192.168.65.1:3000/", โฮสต์: "localhost", ผู้อ้างอิง: "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 เช่น Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"

ไม่มีใครรู้ว่ามีอะไรผิดปกติที่นี่?

นอกจากนี้ เมื่อฉันดีบัก nginx ก็เหมือนกล่องดำสำหรับฉัน ฉันต้องการที่จะติดตามและดูว่า url ใดเข้าสู่บล็อคที่ตั้งใด และเปลี่ยนเป็น url ใด (โดย proxy_pass หรือ เขียนใหม่ฯลฯ). ใครบ้างมีวิธีที่ดีกว่าในการดีบักหรือเข้าสู่ระบบนั้น

ws flag
ฉันไม่คุ้นเคยกับการจัดการ certbot ของนักเทียบท่า แต่ letsencrypt จะไม่ออกใบรับรองด้วยชื่อโฮสต์ 'localhost'
kr flag
@symcbean คุณพูดถูก ตอนนี้ฉันใช้อิมเมจนักเทียบท่าอื่น
dirkt avatar
in flag
วิธีการแก้ไขจุดบกพร่องทั่วไป (ซึ่งตอนนี้คุณอาจทำไปแล้ว): (1) ใช้แท็บเครือข่ายในเครื่องมือสำหรับนักพัฒนาสำหรับเบราว์เซอร์ของคุณ (Safari หรืออย่างอื่น) โดยเฉพาะอย่างยิ่งจะแสดงปลายทางใหม่สำหรับ 302 ดังนั้นคุณจึงสามารถเข้าใจเพิ่มเติมเกี่ยวกับสิ่งที่ ดำเนินต่อไปในการไหล (2) ใช้พร็อกซีคนกลางในการบันทึก เช่น [mitmproxy](https://mitmproxy.org) ในโหมดพร็อกซีโปร่งใส หากจำเป็น (3) โดยหลักการแล้ว คุณสามารถใส่ mitproxy ระหว่าง nginx และบริการของคุณได้
dirkt avatar
in flag
และฉันไม่เข้าใจว่าคุณต้องการบันทึกการเปลี่ยนเส้นทาง OAuth ตามปกติด้วยการตั้งค่าพร็อกซีของคุณอย่างไร ดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นได้ว่าทำไมจึงใช้ไม่ได้ สำหรับ OAuth ปกติ คุณไม่จำเป็นต้องทำอะไรเป็นพิเศษ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา