Jakarta EE 10应用使用OIDC时认证服务器报密钥长度不匹配错误
解决Jakarta EE 10 OIDC中A256CBC-HS512密钥长度不匹配问题
问题核心
报错明确指出:使用A256CBC-HS512算法时需要**512位(64字节)**密钥,但当前提供的是256位密钥,导致加密校验失败。这个问题和extraParametersExpression关联不大,核心是密钥与算法的配置不匹配。
具体解决步骤
1. 找对密钥配置的地方
Jakarta EE的OIDC实现(比如WildFly/EAP的Elytron、Quarkus OIDC)的密钥/算法配置不在OIDC注解里,而是在配置文件中:
- 若用WildFly/EAP:打开
standalone.xml或domain.xml,找到elytron子系统的key-store或credential-store节点,检查密钥长度是否为64字节。 - 若用Quarkus:在
application.properties里,查看quarkus.oidc.credentials.secret或quarkus.oidc.jwt.encryption.key这类属性,确保值是64字节的Base64编码字符串。
2. 两种调整方案选其一
- 方案一:换512位密钥
用OpenSSL生成符合要求的密钥:
把生成的字符串替换到配置里的密钥字段。openssl rand -hex 64 - 方案二:换适配256位密钥的算法
如果不想换密钥,把算法改成A256CBC-HS256(这个算法只需要256位密钥),找到配置里指定算法的属性修改即可。
3. 排查extraParametersExpression(可选)
如果仍怀疑这个参数有影响,它是用来向认证服务器额外传参数的:
- Quarkus里对应属性是
quarkus.oidc.extra-parameters-expression - WildFly里在OIDC客户端配置的
extra-parameters-expression属性
检查它是否强制指定了A256CBC-HS512算法,但密钥长度没跟上。
验证
改完配置重启应用,触发OIDC认证,看日志是否还出现密钥长度警告。要是还有问题,检查认证服务器端的OIDC客户端配置,确保两边的算法和密钥完全一致。
内容的提问来源于stack exchange,提问作者Daniel Maldonado
相关产品推荐
相关产品推荐

