我有一个使用Spring Cloud OAuth2的授权服务器Spring Boot项目。我将这些bean用于JWT:
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter tokenConverter = new JwtAccessTokenConverter();
tokenConverter.setSigningKey("my-test-jwt-secret");
return tokenConverter;
}
@Bean
public JwtTokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}
登录看起来工作得很好,但是当我运行这个项目时,我收到了这样的警告:
WARN 16804 --- [main] o.s.s.o.p.t.s.JwtAccessTokenConverter : Unable to create an RSA verifier from verifierKey (ignoreable if using MAC)
如何摆脱此警告?
发布于 2021-05-21 06:23:06
可以将JwtAccessTokenConverter
配置为使用MAC密钥或RSA密钥对来生成和验证签名。
正如警告中提供的消息所示,您可能使用的是MAC密钥而不是RSA密钥对。因此,它可能不会假设有问题,但由于库的实现方式,我担心您无法摆脱警告。
正如您在JwtAccessTokenConverter
的source code中看到的,在尝试创建签名验证RsaVerifier
时会发出警告:
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密钥:
public RsaVerifier(String key) {
this(RsaKeyHelper.parsePublicKey(key.trim()), RsaSigner.DEFAULT_ALGORITHM);
}
在这里,RsaKeyHelper
将失败地尝试将提供的密钥解析为ssh或pem密钥,因为它实际上不是那种类型的密钥。
假设此验证密钥的值与提供的签名密钥与MAC密钥的setSigningKey method的参数相同。
如果您实际使用的是RSA密钥,则可以使用setVerifierKey
或setKeyPair方法来提供加密的RSA材料。
https://stackoverflow.com/questions/64695359
复制相似问题