Keycloak 계정 관리 콘솔이 Nginx 역방향 프록시와 작동하지 않습니다.

Keycloak 계정 관리 콘솔이 Nginx 역방향 프록시와 작동하지 않습니다.

이상한 문제가 발생했습니다. 아래 구성을 사용하여 Keycloak을 실행하고 있으며 관리 콘솔이 제대로 실행되고 있습니다.

불행하게도 계정 클라이언트(계정 관리 콘솔, 예를 들어 사용자 목록에서 "가장" 선택)에 액세스하려고 하면 Keycloak을 로드하지 못했다는 팝업이 표시되고 무한 로딩 스피너가 나타납니다. Firefox의 개발자 도구에서는 이것이 403 오류 때문이라고 말합니다.

SSL 없이(및 Nginx 없이) 액세스하여 테스트하면 모든 것이 잘 작동합니다. 제가 사용하고 있는 구성은 다음과 같습니다.

server {
    listen 80;
    server_name keycloak.domain.org;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name keycloak.domain.org;

    ssl_certificate /etc/letsencrypt/live/keycloak.domain.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/keycloak.domain.org/privkey.pem;

    location /auth {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $host;
        proxy_buffers 4 16k;
    }
}

다음 명령으로 Keycloak을 시작합니다(물론 다음 작업은 Postgres를 사용하도록 구성하는 것입니다).

docker run -d -p 8080:8080 \
        -e KEYCLOAK_USER=admin\
        -e KEYCLOAK_PASSWORD=admin\
        -e PROXY_ADDRESSFORWARDING=true\
        -t quay.io/keycloak/keycloak:12.0.4\
                -b 0.0.0.0 \
                -Dkeycloak.frontendUrl=https://keycloak.domain.org/auth/

답변1

나는 똑같은 문제가 있었고 그것을 해결할 수있었습니다 (참조여기, 간단한 설명은 다음과 같습니다):

  1. proxy-address-forwarding="true"keycloak 서버의 HTTP 리스너 구성 값을 설정했는지 확인하세요 .
  2. 더 많은 프록시 헤더 구성도 포함해야 합니다. 나는 다음을 가지고 있습니다 :
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
    
  3. 속성 파일에도 추가했지만 proxy=edge도움이 될지 잘 모르겠습니다.

모든 것이 정상인지 확인하려면:

  1. (JSON 문서)로 이동하여 엔드포인트 구성을 확인 http(s)://YOUR_PROXY_SERVER/auth/realms/master/.well-known/openid-configuration하고 엔드포인트 경로를 확인하세요.
  2. 로그인 방법잘못된관리 콘솔에 대한 자격 증명을 확인하고 서버 로그를 살펴보세요. 여기에는 잘못된 로그인에 대한 항목이 포함되어야 합니다. 항목의 IP 주소가 역방향 프록시 IP 주소가 아니라 역방향 프록시에 연결하는 데 사용하는 클라이언트의 IP인지 확인하세요.

원천:https://www.keycloak.org/docs/latest/server_installation/#_setting-up-a-load-balancer-or-proxy

관련 정보