ฉันใช้ Next-auth กับ keycloak และ docker-compose และฉันได้รับข้อผิดพลาดนี้:
[การตรวจสอบสิทธิ์ครั้งต่อไป][ข้อผิดพลาด][GET_AUTHORIZATION_URL_ERROR]
อาเขต-iori | https://next-auth.js.org/errors#get_authorization_url_error เชื่อมต่อ ECONNREFUSED 127.0.0.1:80 {
อาเขต-iori | ข้อความ: 'เชื่อมต่อ ECONNREFUSED 127.0.0.1:80',
อาเขต-iori | สแต็ก: 'ข้อผิดพลาด: เชื่อมต่อ ECONNREFUSED 127.0.0.1:80\n' +
อาเขต-iori | ' ที่ TCPConnectWrap.afterConnect [เมื่อเสร็จสมบูรณ์] (โหนด:net:1161:16)',
อาเขต-iori | ชื่อ: 'ข้อผิดพลาด'
อาเขต-iori | }
อาเขต-iori | [การตรวจสอบสิทธิ์ครั้งต่อไป][ข้อผิดพลาด][SIGNIN_OAUTH_ERROR]
อาเขต-iori | https://next-auth.js.org/errors#signin_oauth_error เชื่อมต่อ ECONNREFUSED 127.0.0.1:80 {
อาเขต-iori | ข้อผิดพลาด: {
อาเขต-iori | ข้อความ: 'เชื่อมต่อ ECONNREFUSED 127.0.0.1:80',
อาเขต-iori | สแต็ก: 'ข้อผิดพลาด: เชื่อมต่อ ECONNREFUSED 127.0.0.1:80\n' +
อาเขต-iori | ' ที่ TCPConnectWrap.afterConnect [เมื่อเสร็จสมบูรณ์] (โหนด:net:1161:16)',
อาเขต-iori | ชื่อ: 'ข้อผิดพลาด'
อาเขต-iori | },
อาเขต-iori | ผู้ให้บริการ: {
อาเขต-iori | id:'เสื้อคลุม',
อาเขตพร็อกซี่ | 172.30.0.1 - - [02/Feb/2022:04:52:58 +0000] "POST /api/auth/signin/keycloak HTTP/1.1" 302 5 "http://localhost/api/auth/signin?callbackUrl =http%3A%2F%2Flocalhost%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/97.0.4692.99 Safari/537.36" "-"
อาเขต-iori | ชื่อ: 'เสื้อคลุม'
อาเขต-iori | ที่รู้จักกันดี: 'http://localhost/auth/realms/myrealm/.well-known/openid-configuration',
อาเขต-iori | ประเภท: 'oauth',
อาเขต-iori | การอนุญาต: { พารามิเตอร์: [Object] },
อาเขต-iori | ตรวจสอบ: [ 'pkce', 'state' ],
อาเขต-iori | idToken: จริง,
อาเขต-iori | โปรไฟล์: [ฟังก์ชัน: โปรไฟล์],
อาเขต-iori | รหัสลูกค้า: 'myclientnext',
อาเขต-iori | ความลับของลูกค้า: 'a2D7ZgIFMeijlfbKOi6vZ30dhNUZhrT3',
อาเขต-iori | ผู้ออก: 'http://localhost/auth/realms/myrealm',
อาเขต-iori | signinUrl: 'http://localhost/api/auth/signin/keycloak',
อาเขต-iori | callbackUrl: 'http://localhost/api/auth/callback/keycloak'
อาเขต-iori | },
อาเขต-iori | ข้อความ: 'เชื่อมต่อ ECONREFUSED 127.0.0.1:80'
อาเขต-iori | }
นี่คือการกำหนดค่าการรับรองความถูกต้องครั้งต่อไป:
นำเข้า NextAuth จาก "การตรวจสอบสิทธิ์ครั้งต่อไป"
นำเข้า KeycloakProvider จาก "next-auth/providers/keycloak";
ส่งออกค่าเริ่มต้น NextAuth({
ความลับ: process.env.SECRET,
ไซต์: process.env.NEXTAUTH_URL
ผู้ให้บริการ: [
KeycloakProvider({
รหัสลูกค้า: 'myclientnext',
ความลับของลูกค้า: 'a2D7ZgIFMeijlfbKOi6vZ30dhNUZhrT3',
ผู้ออก: 'http://localhost/auth/realms/myrealm',
})
]
})
นี่คือ docker-compose.yml ของฉัน:
รุ่น: '3.7'
ปริมาณ:
keycloak_db_data:
คนขับ: ท้องถิ่น
เครือข่าย:
อาเขต:
คนขับ: สะพาน
บริการ:
keycloak-db:
ภาพ: postgres:11.2
container_name: อาเขต-keycloak-db
ปริมาณ:
- keycloak_db_data:/var/lib/postgresql/data
สิ่งแวดล้อม:
POSTGRES_DB: เกมอาเขต
POSTGRES_USER: อาร์เคด
POSTGRES_PASSWORD: อาร์เคด
เครือข่าย:
- อาเขต
เสื้อคลุม:
ภาพ: quay.io/keycloak/keycloak:16.1.0
container_name: อาเขต-keycloak
สิ่งแวดล้อม:
DB_VENDOR: โพสต์เกรส
DB_ADDR: อาเขต-keycloak-db
DB_DATABASE: เกมอาร์เคด
DB_USER: อาร์เคด
DB_SCHEMA: สาธารณะ
DB_PASSWORD: อาร์เคด
KEYCLOAK_USER: ผู้ดูแลระบบ
KEYCLOAK_PASSWORD: ผู้ดูแลระบบ
PROXY_ADDRESS_FORWARDING: จริง
# ยกเลิกการแสดงความคิดเห็นในบรรทัดด้านล่างหากคุณต้องการระบุพารามิเตอร์ JDBC พารามิเตอร์ด้านล่างเป็นเพียงตัวอย่าง และไม่ควรใช้ในการผลิตโดยปราศจากความรู้ ขอแนะนำให้คุณอ่านเอกสารประกอบของไดรเวอร์ PostgreSQL JDBC เพื่อใช้งาน
#JDBC_PARAMS: "ssl=true"
พอร์ต:
- 8080:8080
ขึ้นอยู่กับ:
-keycloak-db
เครือข่าย:
- อาเขต
อิโอริ:
stdin_open: รัน # นักเทียบท่าจริง -i
tty: รัน # นักเทียบท่าจริง -t
สร้าง:
บริบท: ../iori/
นักเทียบท่าไฟล์: Dockerfile
ภาพ: iori
container_name: อาเขต-iori
พอร์ต:
- 3000:3000
ปริมาณ:
- '../iori/:/แอป'
- '/app/node_modules'
เครือข่าย:
- อาเขต
พร็อกซี:
ภาพ: nginx
container_name: อาเขตพร็อกซี
รีสตาร์ท: เว้นแต่จะหยุด
พอร์ต:
- 80:80
ปริมาณ:
- ./default-proxy.conf:/etc/nginx/conf.d/default.conf:ro
เครือข่าย:
- อาเขต
นี่คือ default-proxy.conf:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
server_name localhost;
ตำแหน่ง /keycloak/ {
proxy_pass http://arcade-keycloak:8080/;
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-ส่งต่อเซิร์ฟเวอร์ $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
ตำแหน่ง /auth/ {
proxy_pass http://arcade-keycloak:8080/auth/;
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-ส่งต่อเซิร์ฟเวอร์ $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
ที่ตั้ง / {
proxy_pass http://arcade-iori:3000;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ 'อัปเกรด';
proxy_set_header โฮสต์ $host;
proxy_cache_bypass $http_upgrade;
}
error_page 500 502 503 504 /50x.html;
ตำแหน่ง = /50x.html {
รูท /usr/share/nginx/html;
}
}