首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JwtAccessTokenConverter:无法从verifierKey创建RSA验证器

JwtAccessTokenConverter:无法从verifierKey创建RSA验证器
EN

Stack Overflow用户
提问于 2020-11-05 18:31:11
回答 1查看 384关注 0票数 4

我有一个使用Spring Cloud OAuth2的授权服务器Spring Boot项目。我将这些bean用于JWT:

代码语言:javascript
运行
复制
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
    JwtAccessTokenConverter tokenConverter = new JwtAccessTokenConverter();
    tokenConverter.setSigningKey("my-test-jwt-secret");
    return tokenConverter;
}

@Bean
public JwtTokenStore tokenStore() {
    return new JwtTokenStore(accessTokenConverter());
}

登录看起来工作得很好,但是当我运行这个项目时,我收到了这样的警告:

代码语言:javascript
运行
复制
WARN 16804 --- [main] o.s.s.o.p.t.s.JwtAccessTokenConverter    : Unable to create an RSA verifier from verifierKey (ignoreable if using MAC)

如何摆脱此警告?

EN

Stack Overflow用户

回答已采纳

发布于 2021-05-21 06:23:06

可以将JwtAccessTokenConverter配置为使用MAC密钥或RSA密钥对来生成和验证签名。

正如警告中提供的消息所示,您可能使用的是MAC密钥而不是RSA密钥对。因此,它可能不会假设有问题,但由于库的实现方式,我担心您无法摆脱警告。

正如您在JwtAccessTokenConvertersource code中看到的,在尝试创建签名验证RsaVerifier时会发出警告:

代码语言:javascript
运行
复制
SignatureVerifier verifier = new MacSigner(verifierKey);
try {
  verifier = new RsaVerifier(verifierKey);
}
catch (Exception e) {
  logger.warn("Unable to create an RSA verifier from verifierKey (ignoreable if using MAC)");
}

异常是在RsaVerifier constructor中引发的,因为它试图将验证密钥解析为RSA公钥,而您可能使用的是MAC密钥:

代码语言:javascript
运行
复制
public RsaVerifier(String key) {
  this(RsaKeyHelper.parsePublicKey(key.trim()), RsaSigner.DEFAULT_ALGORITHM);
}

在这里,RsaKeyHelper将失败地尝试将提供的密钥解析为ssh或pem密钥,因为它实际上不是那种类型的密钥。

假设此验证密钥的值与提供的签名密钥与MAC密钥的setSigningKey method的参数相同。

如果您实际使用的是RSA密钥,则可以使用setVerifierKeysetKeyPair方法来提供加密的RSA材料。

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64695359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档