【发布时间】:2018-06-24 15:47:34
【问题描述】:
我们在 .NET Core 中生成了一个 Bearer JWT 令牌,并使用使用 Powershell 生成的 X509 自签名证书的 pfx 对令牌进行了签名。
我们需要在 Springboot Java 应用程序中验证令牌签名。 为此,我们使用 Java 中的密钥工具将 pfx 导入到 java 密钥库 (jks)。
keytool -importkeystore -srckeystore "certificate.pfx" -srcstoretype pkcs12 -destkeystore "clientcert.jks" -deststoretype JKS
我们正在一个资源服务器中验证令牌签名,我们在其中配置了一个 JwtAccessTokenConverter,如下所示。
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
InputStream inJksStream = null;
InputStream inputJksStream = null;
inJksStream = new FileInputStream("clientcert.jks");
inputJksStream = new BufferedInputStream(inJksStream);
KeyStore trustStore = KeyStore.getInstance("jks");
trustStore.load(inputJksStream, "password".toCharArray());
Key trustStorePrivateKey = trustStore.getKey("alias-value", "password".toCharArray());
converter.setSigningKey(Base64.getEncoder().encodeToString(trustStorePrivateKey.getEncoded()));
应用程序中的控制器用以下元素装饰。
@PreAuthorize("isAuthenticated()")
但是,当有效的 JWT 令牌与请求一起传递给 Springboot 应用程序时,我们会遇到签名无效异常。
这是在 Springboot 中验证 Bearer JWT 令牌的适当方法吗?
【问题讨论】:
标签: java spring-boot .net-core jwt