Spring OAuth2中的HMACSHA512无法正常工作

时间:2018-02-07 11:39:52

标签: java spring spring-security spring-security-oauth2 hmac

你能用我的代码帮我吗?我正在尝试在我的网站上的Spring Security中实现OAuth2以进行jwt身份验证。我已经实现了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时,我在postman中遇到了这个错误:

{
    "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吗?感谢。

1 个答案:

答案 0 :(得分:0)

将算法更改为512 您需要将服务器/资源JwtAccessTokenConverter setVerifier设置为与setSigner相同的操作,例如:

jwtAccessTokenConverter.setVerifier(MacSigner("HMACSHA512", SecretKeySpec("secret_password".toByteArray(), "HMACSHA512")))

请记住:是否需要设置