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

通过AWS应用负载均衡器访问Keycloak登录后出现「invalid credentials」错误求助

通过AWS应用负载均衡器访问Keycloak登录后出现「invalid credentials」错误求助

大家好,我现在碰到一个头疼的问题想请教各位大佬:通过AWS应用负载均衡器(ALB)访问Keycloak完成登录后,总是弹出「invalid credentials」的错误,但直接访问节点上的Keycloak却完全正常。先跟大家说下我的环境配置情况:

我的基础设施与应用配置

  • 有两台EC2节点,分别是节点A和节点B,两台节点上都在8082端口运行着业务应用
  • 节点A上额外部署了Keycloak(监听8443端口),负责给两台节点8082端口的应用提供统一认证服务
  • 两台节点都通过AWS应用负载均衡器对外提供服务,ALB的域名是scdf-01.aws.net

可能的排查方向&解决思路

结合我自己踩过的坑,给你几个可以一步步排查的方向:

1. 先查ALB的会话粘性配置

Keycloak的登录流程非常依赖会话保持,如果ALB把登录后的请求分发到了没有Keycloak会话的节点B,那肯定会报凭证无效。你可以登录AWS控制台,找到对应的ALB目标组,看看有没有开启粘性会话,并且把粘性时长设得足够长(比如30分钟以上),确保登录后的请求一直落到节点A上(毕竟Keycloak只部署在节点A)。

2. 检查Keycloak的前端URL配置

Keycloak的frontendUrl是个很容易踩坑的点!如果你是通过ALB访问的,这个配置必须填ALB的域名,而不是节点A的直接域名。你可以登录节点A的Keycloak后台,进入对应Realm的设置页面,找到「前端URL」选项,确认是不是填的ALB的完整域名(比如scdf-01.aws.net,不用带端口,因为ALB用的是HTTPS默认443端口)。

3. 验证ALB的转发规则与SSL配置

首先确认ALB的SSL证书是覆盖了scdf-01.aws.net这个域名的,然后重点看转发规则:

  • 如果你是用同一个ALB域名同时转发应用和Keycloak请求,那得配置路径规则,比如把/auth/*开头的请求转发到节点A的8443端口,其他路径转发到两台节点的8082端口。一定要确认Keycloak的请求不会被分发到节点B,不然肯定出问题。
  • 另外要确认ALB转发请求时,有没有正确传递Host头和Cookie,这些都是Keycloak识别会话的关键。

4. 扒一扒Keycloak的日志找线索

节点A上的Keycloak日志绝对是排错神器!日志一般在/opt/keycloak/logs目录下的server.log文件里,你可以在出现错误的瞬间去拉取日志,看看里面有没有更具体的报错信息——比如是不是Cookie没传对、重定向地址不匹配,或者是Realm配置有问题,这些细节都能在日志里找到答案。

5. 用浏览器开发者工具查Cookie

你可以打开浏览器的F12开发者工具,切换到「Application」标签,在登录Keycloak后看看Cookie的情况:重点看Cookie的Domain属性是不是ALB的域名(scdf-01.aws.net),如果是节点A的域名,那通过ALB访问时Cookie就会被拦截,自然就会报凭证无效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:19:30