使用Keycloak 19.0.3与Kong-OIDC时缺失x-userinfo请求头问题排查
问题排查与解决方案
核心原因
Kong OIDC插件(revomatico版本)默认不会自动添加X-Userinfo请求头,需要手动开启对应配置项。
具体配置调整
在Kong的OIDC插件配置中,添加以下关键参数:
set_x_userinfo_header: 设置为true(此参数控制是否将用户信息注入到请求头中)- (可选)
userinfo_header_name: 若需自定义头名称可在此指定,默认值即为X-Userinfo
如果通过Kong Admin API配置插件,示例请求如下:
curl -X POST http://kong-admin:8001/routes/{your-route-id}/plugins \ --data "name=oidc" \ --data "config.client_id={your-client-id}" \ --data "config.client_secret={your-client-secret}" \ --data "config.discovery={keycloak-discovery-url}" \ --data "config.set_x_userinfo_header=true"
额外注意事项
- 插件安装简化:你的Dockerfile中重复安装了kong-oidc插件(多次执行安装命令),可能导致版本冲突或冗余,建议简化为单一安装方式:
FROM kong/kong:2.7.0 ENV OIDC_PLUGIN_VERSION=1.2.3-2 ENV GIT_VERSION=2.24.4-r0 ENV UNZIP_VERSION=6.0-r7 ENV LUAROCKS_VERSION=2.4.4-r1 # 补充jwt插件版本变量 ENV JWT_PLUGIN_VERSION=1.0.0 USER root RUN apk update && apk add git unzip luarocks # 安装kong-oidc插件 RUN git clone --branch v${OIDC_PLUGIN_VERSION} https://github.com/revomatico/kong-oidc.git \ && cd /kong-oidc \ && luarocks make # 安装jwt-keycloak插件 RUN git clone --branch 20200505-access-token-processing https://github.com/BGaunitz/kong-plugin-jwt-keycloak.git \ && cd /kong-plugin-jwt-keycloak \ && luarocks make USER kong
注:原Dockerfile中使用了${JWT_PLUGIN_VERSION}但未定义该变量,需补充对应版本值。
插件冲突排查:如果路由同时启用了
oidc和jwt-keycloak插件,建议先单独启用oidc插件测试是否能生成X-Userinfo头,确认正常后再调整插件执行顺序或兼容性。Keycloak配置验证:确保Keycloak客户端的
Access Type设为confidential,并确认客户端已获取profile等用户信息相关权限。
内容的提问来源于stack exchange,提问作者scripter
相关产品推荐
相关产品推荐

