Docker环境下NextJS+NextAuth对接Keycloak认证报错求助
Docker环境下NextAuth对接Keycloak出现ECONNREFUSED错误
我在Docker环境中使用NextAuth实现NextJS应用与Keycloak的认证对接时,持续出现以下错误:
frontend-1 | [next-auth][error][SIGNIN_OAUTH_ERROR] frontend-1 | https://next-auth.js.org/errors#signin_oauth_error connect ECONNREFUSED 127.0.0.1:443 { frontend-1 | error: { frontend-1 | message: 'connect ECONNREFUSED 127.0.0.1:443', frontend-1 | stack: 'Error: connect ECONNREFUSED 127.0.0.1:443\n' + frontend-1 | ' at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)', frontend-1 | name: 'Error' frontend-1 | }, frontend-1 | providerId: 'keycloak', frontend-1 | message: 'connect ECONNREFUSED 127.0.0.1:443' frontend-1 | }
该配置在本地非Docker环境下可正常运行,认证能成功跳转到Keycloak登录页面,仅Docker部署时出现此问题。
当前docker-compose.yml配置
version: "3.9" services: traefik: image: docker.io/traefik command: - --api.insecure=true - --providers.docker - --entrypoints.web.address=:80 - --entrypoints.web-secure.address=:443 ports: - "127.0.0.1:8080:8080" - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock keycloak: image: quay.io/keycloak/keycloak:20.0.3 restart: always command: - start - --import-realm environment: KC_PROXY_ADDRESS_FORWARDING: "true" KC_HOSTNAME_STRICT: "false" KC_HOSTNAME: auth.example.com KC_PROXY: edge KC_HTTP_ENABLED: "true" KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres:5432/db?ssl=allow KC_DB_USERNAME: postgres KC_DB_PASSWORD: postgres KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: password labels: - "traefik.http.routers.keycloak.rule=Host(`auth.example.com`)" - "traefik.http.routers.cloud-network-keycloak.rule=Host(`auth.example.com`)" - "traefik.http.routers.cloud-network-keycloak.tls=true" - "traefik.http.services.cloud-network-keycloak.loadbalancer.server.port=8080" volumes: - ./realm-export.json:/opt/keycloak/data/import/realm.json frontend: image: ericus20/et-transit-frontend build: context: ./frontend target: RUNNER volumes: - .:/app - /app/node_modules command: yarn --cwd frontend dev ports: - "3000:3000" environment: NODE_ENV: development NEXTAUTH_URL: http://localhost:3000 NEXTAUTH_URL_INTERNAL: http://frontend:3000 KEYCLOAK_ISSUER: https://auth.example.com/realms/realm-name postgres: image: docker.io/postgres:alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: db
已尝试的配置调整
我也曾尝试将KEYCLOAK_ISSUER改为:
KEYCLOAK_ISSUER: https://keycloak:8080/realms/realm-name
我使用的是NextJS 13版本,非常感谢您的帮助,如果能提供可用示例将不胜感激。
内容的提问来源于stack exchange,提问作者Knight Rider
相关产品推荐
相关产品推荐

