You need to enable JavaScript to run this app. 部署在GKE上的Keycloak无法通过用户名密码完成用户认证
优惠活动
大模型
产品
解决方案
定价
更多

部署在GKE上的Keycloak无法通过用户名密码完成用户认证

问题根因与解决方案

你遇到的报错是两个配置错误共同导致的,对应修复方案如下:

1. 调用了错误的端点

你当前请求的/auth/realms/demo/protocol/openid-connect/auth是授权码流程专用的授权端点,仅用于引导用户跳转登录获取授权码,不适用于grant_type=password的密码授权模式,密码模式需要请求令牌端点:

  • 如果你部署的是旧版WildFly架构的Keycloak:令牌端点路径为 /auth/realms/demo/protocol/openid-connect/token
  • 如果你部署的是新版Quarkus架构的Keycloak(当前官方默认版本,GKE上部署的大概率是该版本):默认已经去掉了/auth前缀,令牌端点路径为 /realms/demo/protocol/openid-connect/token

你本地环境运行正常是因为本地用的是带/auth前缀的旧版本,GKE上的新版本路径规则发生了变化,所以原请求返回404。

2. 无需调整Redirect URI配置

Redirect URI仅在授权码流、隐式流这类需要浏览器跳转的流程中需要配置,密码授权模式不需要用到该配置。你修改Redirect URI为*之后出现的新报错,本质还是因为你请求了错误的授权端点,该端点要求传入response_type、redirect_uri等授权码流程必填参数,和Redirect URI配置本身无关。

3. 额外校验项

需要确认你Keycloak客户端的**直接访问授权(Direct Access Grants Enabled)**开关为开启状态,否则密码授权模式会被Keycloak主动拒绝。

正确请求示例(适用于新版Quarkus Keycloak)

curl --location --request POST 'http://<MY_KEYCLOAK_PUBLIC_IP>/realms/demo/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=demo-app' \
--data-urlencode 'username=test' \
--data-urlencode 'password=test' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_secret=ee39b325-7dw4-4c0c-681f-29e2f7f63f57'

如果请求仍然返回404,可以加上/auth前缀再尝试。

内容的提问来源于stack exchange,提问作者Karim Tawfik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:06:03