Jakarta Faces+OIDC环境下Ajax请求会话失效后302重定向问题
问题:Jakarta Faces + OIDC会话失效后Ajax请求无法正确处理
环境配置
- Jakarta Faces 4.0
- OIDC Jakarta Security
- Elytron Oidc Client
- Wildfly 27.0.1
- Keycloak 21.0.2(未使用Wildfly适配器)
正常流程
点击安全链接会自动重定向到Keycloak登录页,登录完成后可返回原访问链接,这部分功能正常。
问题现象
登录后打开两个安全页面标签,在第一个标签执行注销操作后,第二个标签的所有Ajax请求全部失效:
- 会话失效后点击Ajax按钮,服务器返回302重定向响应,而非预期的
<partial-response><redirect格式的Faces Ajax响应,导致前端Ajax无法正确处理 - 已配置Omnifaces的异常处理器,配置代码如下:
<factory> <exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory> <exception-handler-factory>org.omnifaces.exceptionhandler.ViewExpiredExceptionHandlerFactory</exception-handler-factory> </factory> - Wildfly已配置反向代理避免跨域问题,且要求跳转登录时不改变URL
疑问与已做尝试
- Wildfly中哪个组件负责生成这个302重定向响应?
- 如何正确处理会话失效场景下的Ajax请求,让其返回符合Faces规范的Ajax重定向响应?
- 尝试设置
autodetect-bearer-only后,POST请求不再返回302而是401,但无法衔接Jakarta Security与浏览器客户端,且无该配置时Ajax请求在会话有效期间正常工作。
内容的提问来源于stack exchange,提问作者Janez Puntar
相关产品推荐
相关产品推荐

