【问题标题】:Keycloak: page not foundKeycloak:找不到页面
【发布时间】:2022-08-19 22:18:33
【问题描述】:

我正在使用 Keycloak 作为 Directus 的 SSO。它们位于同一网络中。

version: \'3\'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: unless-stopped
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 80:80
    networks:
      - directus_keycloak
    depends_on:
      - keycloak
      - directus_service

  postgres:
    container_name: postgres
    image: postgres:13.7-alpine
    volumes:
      - ./db:/var/lib/postgresql/data
    networks:
      - directus_keycloak
    ports:
      - ...
    environment:
      ...

  redis:
    container_name: redis
    image: redis:6
    networks:
      - directus_keycloak

  directus_service:
    container_name: directus_service
    image: directus/directus:latest
    ports:
      - 8055:8055
    volumes:
      - ./uploads:/directus/uploads
      - ./extensions:/directus/extensions
      - ./snapshots:/directus/snapshots
    networks:
      - directus_keycloak
    depends_on:
      - redis
      - postgres
      - keycloak
    env_file:
      - ./.env

  keycloak:
    image: quay.io/keycloak/keycloak:legacy
    environment:
      DB_VENDOR: postgres
      DB_ADDR: \'postgres\'
      DB_PORT: \'5432\'
      DB_DATABASE: \'...\'
      DB_USER: \'...\'
      DB_PASSWORD: \'...\'
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: ...
      PROXY_ADDRESS_FORWARDING: \"true\"
      REDIRECT_SOCKET: \"proxy-http\"
      KEYCLOAK_FRONTEND_URL: http://keycloak.localhost/auth
    depends_on:
      - postgres
    networks:
      - directus_keycloak
    ports:
      - \"8080:8080\"
networks:
  directus_keycloak:
    driver: bridge

我可以使用 NGINX 访问 Directus 和 Keycloak:

http {
  upstream keycloak_backend {
    least_conn;
    server keycloak:8080;
  }

  upstream directus_backend {
    least_conn;
    server directus_service:8055;
  }

  server {
      listen 80;
      server_name keycloak.localhost;
      proxy_set_header X-Forwarded-For $proxy_protocol_addr; 
      proxy_set_header X-Forwarded-Proto $scheme; 
      proxy_set_header Host $host; 

      location / {
            proxy_pass http://keycloak_backend;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
      }
  }

  server {
       listen 80;
       server_name api.localhost;
       proxy_set_header X-Forwarded-For $proxy_protocol_addr;
       proxy_set_header X-Forwarded-Proto $scheme; 
       proxy_set_header Host $host; 

       location / {
              proxy_pass http://directus_backend;
              proxy_set_header   Host $host;
              proxy_set_header   X-Real-IP $remote_addr;
              proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header   X-Forwarded-Host $server_name;
       }
  }
}

但是当我尝试使用 Keycloak 作为提供者登录 Directus 管理面板时,我得到We are sorry... page not found

也有 .env 文件

KEY=\'..\'
SECRET=\'...\'

DB_CLIENT=\'pg\'
DB_HOST=\'postgres\'
DB_PORT=\'5432\'
DB_DATABASE=\'...\'
DB_USER=\'...\'
DB_PASSWORD=\'...\'

CACHE_ENABLED=false
CACHE_STORE=\'redis\'
CACHE_REDIS=\'redis://redis:6379\'

ADMIN_EMAIL=\'admin@example.com\'
ADMIN_PASSWORD=\'...\'

AUTH_PROVIDERS=\"keycloak\"
AUTH_KEYCLOAK_DRIVER=\"openid\"
AUTH_KEYCLOAK_CLIENT_ID=\"...\"
AUTH_KEYCLOAK_CLIENT_SECRET=\"...\"
AUTH_KEYCLOAK_ISSUER_URL=\"http://keycloak:8080/auth/realms/.../.well-known/openid-configuration\"
AUTH_KEYCLOAK_PROFILE_URL=\"http://keycloak:8080/auth/realms/.../.well-known/openid-configuration\"
AUTH_KEYCLOAK_ALLOW_PUBLIC_REGISTRATION=\"true\"
AUTH_KEYCLOAK_IDENTIFIER_KEY=\"email\"
AUTH_KEYCLOAK_SCOPE=\"openid email\"

我建议应该有一些方法可以在 keycloak 界面中设置重定向 url。我发现只设置了重定向 url 的验证。

有什么解决办法吗?

  • 有用。在 keycloak 领域内配置客户端存在问题,而不是上面的配置

标签: nginx keycloak directus keycloak-connect


【解决方案1】:

有用。在 keycloak 领域内配置客户端存在问题,而不是上面的配置

【讨论】:

    猜你喜欢
    • 2022-12-23
    • 1970-01-01
    • 2021-01-28
    • 2016-08-25
    • 2013-06-28
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多