Keycloak 18.0.2出现HTTP 400错误但业务正常,求原因
以下是几种常见的原因,均不会影响核心业务功能:
用户端Cookie被拦截或丢失
用户浏览器可能开启了第三方Cookie拦截、隐私模式,或者手动清理了Cookie。在Facebook OAuth授权流程中,Keycloak会先将state参数存储到用户Cookie中,回调验证时若找不到该Cookie,就会触发IDENTITY_PROVIDER_LOGIN_ERROR(错误类型cookie_not_found)及400请求错误。这类情况仅影响单次中断的授权尝试,用户重新发起登录流程即可正常完成,因此核心业务不受影响。授权流程被异步中断
用户发起Facebook登录后,中途关闭授权弹窗、刷新页面或直接跳转至其他页面,导致Keycloak的回调端点收到请求时,对应的会话Cookie已不存在。这类错误属于用户操作中断导致的无效请求,不会影响正常完成的授权流程,因此业务功能依然正常。网络延迟引发的时序问题
当网络延迟较高时,Keycloak设置的会话Cookie还未同步到用户浏览器,用户就已完成Facebook端的授权并跳转回Keycloak。此时回调请求中缺少验证所需的Cookie,会触发错误日志。但后续用户重新操作时,网络时序恢复正常即可成功授权,不会影响业务运行。会话配置的边缘场景
若Keycloak的会话超时时间设置过短,或Cookie的生命周期配置不合理,可能在用户完成Facebook授权的过程中,Cookie已过期失效。这类情况仅发生在操作耗时较长的少数用户身上,大部分正常操作的用户不会触发,因此核心业务功能不受影响。
内容的提问来源于stack exchange,提问作者alexanoid

