You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器(Keycloak+Hesk)与Nginx结合的OIDC认证配置问题

Docker容器(Keycloak+Hesk)与Nginx结合的OIDC认证配置问题

嘿,看你的环境已经搭得七七八八了——Docker跑Keycloak在8090、Hesk在8088,主机用Nginx管反向代理和SSL,还给auth.example.de和support.example.de做了HTTP转HTTPS的配置。不过你贴的Nginx代码好像没写完,而且核心的OIDC认证集成部分还没涉及到对吧?我来帮你一步步捋清楚该怎么配置。

第一步:完善Nginx反向代理配置

先把你未完成的Nginx配置补全,确保Keycloak和Hesk的请求能被正确转发,同时适配Keycloak的WebSocket需求:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush      on;
    keepalive_timeout  65;
    gzip  on;
    
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    
    # auth.example.de HTTP转HTTPS
    server {
        listen 80;
        server_name auth.example.de;
        return 301 https://$host$request_uri;
    }

    # Keycloak的HTTPS反向代理
    server {
        listen       443 ssl;
        server_name  auth.example.de;
        
        ssl_certificate     /path/to/your/valid/cert.crt;
        ssl_certificate_key /path/to/your/valid/cert.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://localhost:8090;
            # 传递必要的请求头,让Keycloak识别真实客户端信息
            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-Proto $scheme;
            # Keycloak控制台需要WebSocket支持,必须加这两行
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

    # support.example.de HTTP转HTTPS
    server {
        listen 80;
        server_name support.example.de;
        return 301 https://$host$request_uri;
    }

    # Hesk的HTTPS反向代理
    server {
        listen       443 ssl;
        server_name  support.example.de;
        
        ssl_certificate     /path/to/your/valid/cert.crt;
        ssl_certificate_key /path/to/your/valid/cert.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://localhost:8088;
            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-Proto $scheme;
        }
    }
}

注意:把/path/to/your/valid/cert.crt和/path/to/your/valid/cert.key替换成你实际的SSL证书路径

第二步:Keycloak客户端配置(给Hesk做OIDC认证用)

登录Keycloak管理控制台(https://auth.example.de/admin),按以下步骤操作:

  • 进入你的目标Realm(没有的话先新建一个)
  • 左侧菜单点「Clients」→「Create」:客户端ID填hesk-support,协议选openid-connect,根URL填https://support.example.de,保存
  • 在「Settings」标签页:
    • 访问类型选confidential(因为Hesk是服务器端应用)
    • 有效重定向URI填https://support.example.de/*(如果Hesk有固定回调路径,就填具体路径)
    • 开启「Direct Access Grants Enabled」(如果需要密码模式,推荐优先用授权码模式)
  • 切换到「Credentials」标签页,复制生成的客户端密钥(Secret),后面Hesk配置要用到
  • 「Mappers」标签页添加必要的用户属性映射,比如把Keycloak的email、username映射到OIDC的claim中,方便Hesk同步用户信息

第三步:Hesk的OIDC集成配置

原生Hesk没有内置OIDC支持,需要安装第三方OIDC插件(比如社区维护的hesk-oidc插件),安装完成后在Hesk后台配置:

  • OIDC提供者URL:https://auth.example.de/realms/你的Realm名称
  • 客户端ID:hesk-support(刚才Keycloak里创建的)
  • 客户端密钥:Keycloak复制的Secret值
  • 回调URL:https://support.example.de/插件指定的回调路径(比如hesk_oidc_callback.php,看插件文档)
  • 开启「自动创建用户」:让Keycloak用户首次登录时自动在Hesk生成账号
  • 用户属性映射:把OIDC返回的email、username对应到Hesk的邮箱、用户名字段

一些踩坑注意事项

  • 确保Keycloak容器能正确识别HTTPS请求:Nginx传递的X-Forwarded-Proto头必须正确,否则Keycloak会生成HTTP回调URL导致重定向循环
  • 测试登录流程:访问https://support.example.de,点击登录应该跳转到Keycloak登录页,登录成功后自动回到Hesk并完成登录
  • 检查DNS解析:确保auth.example.de和support.example.de都指向你的主机公网IP

备注:内容来源于stack exchange,提问作者kSp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:18:09