您能帮我提供我的代码吗?我正在尝试在Spring Security中为我的网站上的jwt身份验证实现OAuth2。我实现了AuthorizationServerConfig和ResourceServerConfig,以及一些在其中声明了bean的SecurityConfig。 Bean之一是访问令牌转换器。
这是我的实现:
@Bean
@Primary
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
jwtAccessTokenConverter.setSigner(new MacSigner("HMACSHA512", new SecretKeySpec("secret_password".getBytes(), "HMACSHA512")));
return jwtAccessTokenConverter;
}
已生成令牌,但是当我尝试使用此令牌调用一些api时,邮递员中出现此错误:
{
"error": "invalid_token",
"error_description": "Cannot convert access token to JSON"
}
当我替换此行时:
jwtAccessTokenConverter.setSigner(new MacSigner("HMACSHA512", new SecretKeySpec("secret_password".getBytes(), "HMACSHA512")));
带有此行:
jwtAccessTokenConverter.setSigningKey("secret_password");
令牌生成以及授权同样有效。但它使用默认的HS256。您能告诉我如何修复我的代码以使其与HS512一起使用吗?谢谢。
将您的算法更改为512您需要将服务器/资源JwtAccessTokenConverter setVerifier设置为与setSigner相同的设置,例如:
jwtAccessTokenConverter.setVerifier(MacSigner("HMACSHA512", SecretKeySpec("secret_password".toByteArray(), "HMACSHA512")))
记住:是否需要设置