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

使用Pac4j v4.5.7+Keycloak+Payara时OIDC回调报State无法确定错误

问题:Pac4j v4.5.7 + Payara 5 + Keycloak 16.1.1 OIDC回调State验证失败

环境配置

  • 应用服务器:Payara 5(Java 8)
  • 身份提供商:Keycloak 16.1.1(HTTPS运行)
  • 认证框架:Pac4j v4.5.7(core + oidc)、jee-pac4j v5.0.0
  • 认证方式:单一OIDC Connect客户端

问题现象

  • 登录流程在Keycloak端完成且存在有效会话,但回调至Payara时触发错误:
    org.pac4j.core.exception.TechnicalException: State cannot be determined
    
  • 使用Payara自带OIDC客户端时,出现同类错误:
    Expected state not found
    
  • 回调URL示例:
    http://192.168.1.11:8080/svc/login/oidc_callback?client_name=KeycloakOidcClient&state=ee6cb6f634&session_state=3b74a47d-da7a-451c-8c5e-9ae857b37017&code=6202b059-1b62-44c6-ab38-9b63d13ed0b9.3b74a47d-da7a-451c-8c5e-9ae857b37017.4f4dd20b-fd60-4228-b5d2-e6287ce200f4
    

已排查内容

  • 确认Keycloak 16.1.1的SameSite Cookie设置为"none",排除该配置导致的Cookie丢失问题
  • Payara测试环境为HTTP,Keycloak运行在HTTPS环境,属于跨协议部署

疑问与需求

  • 因需保留Java 8环境无法升级Pac4j,是否存在Pac4j v4与现代浏览器的兼容性问题?
  • 如何解决State验证失败问题,确保回调后能获取有效会话?

内容的提问来源于stack exchange,提问作者Roberto Cisternino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:23:17