Spring OAuth2中的HMACSHA512不起作用

问题描述 投票:0回答:1

您能帮我提供我的代码吗?我正在尝试在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一起使用吗?谢谢。

java spring spring-security spring-security-oauth2 hmac
1个回答
0
投票

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

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

记住:是否需要设置

© www.soinside.com 2019 - 2024. All rights reserved.