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

Pac4j v5.7.0调用OIDC Provider时Accept头不符合HTTP规范问题

Pac4j v5.7.0(适配Magnolia CMS SSO模块)OIDC元数据请求的HTTP合规问题及修复指引

问题概述

在Magnolia CMS的SSO模块中使用Pac4j v5.7.0请求OIDC Provider的配置元数据(预期返回application/json类型)时,发送的Accept头为:

text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

该请求头触发合规OIDC服务器返回406(内容协商失败)错误,导致无法获取所需的配置元数据。

违规点分析

该Accept头存在两处违反RFC 9110规范的问题:

  • 媒体类型格式违规:单独使用*作为媒体类型不符合规范,RFC 9110要求通配符媒体类型必须为*/*(表示所有类型),不能单独使用*
  • 质量值(q值)格式违规:q值的合法格式需包含小数点前的0,例如q=0.2,而当前的.2写法不符合标准

根因定位

Pac4j在此请求流程中直接复用了java.net.URLConnection的默认Accept头,且SpringResourceHelper类未对该请求头做自定义修改。问题根源可追溯至3个月前引入SpringResourceLoader/Helper类的代码提交,在Pac4j v5.7.0版本中,相关请求逻辑位于OidcConfiguration.java的175-195行。

修复建议

需要在请求OIDC配置元数据的逻辑中,显式设置符合HTTP规范的Accept头,示例合法的Accept头如下:

Accept: application/json, */*; q=0.5

具体修复方式可在SpringResourceHelper或OidcConfiguration的请求构建代码中添加自定义请求头的逻辑,覆盖默认的Accept头,确保仅包含合法的媒体类型标识和格式正确的质量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:38