【发布时间】:2018-07-17 16:33:13
【问题描述】:
你能帮我写代码吗?我正在尝试在 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 时,我在邮递员中收到此错误:
{
"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 吗?谢谢。
【问题讨论】:
-
@dur 我也尝试了你的第二个建议,我使用这个新的 MacSigner("HMACSHA512", new SecretKeySpec("secret_password".getBytes(), "HMACSHA512")) 作为新变量并将其设置为签名者和验证者,我认为它有效:) 但只是额外的问题......如果它是一个好的程序?
-
为什么你认为这不是一个好的程序?
-
顺便说一句:我已经回答了你的问题here。您是否认为,您的新问题与旧问题重复?如果您愿意,我可以将您的(现在工作的代码)复制到我的答案中。我没有添加一些代码,因为我还不能测试它。
标签: java spring spring-security spring-security-oauth2 hmac