Keycloak 18.0.0所有API响应404 生成访问令牌失败
故障根因
Keycloak 17版本完成Quarkus运行时重构后,默认移除了全局路由的/auth前缀,参考的Baeldung教程是基于17之前的WildFly架构版本编写的,请求路径中多余的/auth字段是触发404的直接原因,和日志打印的找不到路径的报错完全匹配。
修复方案
二选一即可:
- 适配新版本默认路径(推荐,符合官方新版本规范)
直接把所有Keycloak相关请求里的/auth前缀删掉即可,当前使用的令牌生成接口,正确路径应该是:http://localhost:8080/realms/test/protocol/openid-connect/token
后续管理控制台、其他API调用的路径也要同步去掉开头的/auth,比如管理控制台默认地址从老版本的http://localhost:8080/auth/admin调整为http://localhost:8080/admin。 - 兼容旧配置,改Keycloak启动参数恢复
/auth前缀
如果不想修改已经写好的代码、教程配置,可以通过启动参数把上下文路径改回老版本的/auth:- 本地直接启动二进制开发模式时,追加启动参数:
start-dev --http-relative-path=/auth - Docker部署时,给容器添加环境变量
KC_HTTP_RELATIVE_PATH=/auth即可。
- 本地直接启动二进制开发模式时,追加启动参数:
验证
调整配置后重新发起令牌生成请求,即可正常得到包含access_token的响应,不会再出现路径匹配失败的404错误。
内容的提问来源于stack exchange,提问作者Sara Selim
相关产品推荐
相关产品推荐

