我有一个字符串形式的 token ,我下载了公共(public)证书并从中创建了一个公共(public) key ,如下所示。
但我不确定如何使用这么多信息进行验证。
我找到了适用于 C# 和 .NET 的解决方案,但没有找到适用于 Java 的解决方案。 请注意,我没有 jks 文件或私钥。
FileInputStream fin = new FileInputStream("d://public.crt");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
最佳答案
使用 Auth0 库 (com.auth0:java-jwt) 在 Java 中验证 JWT:
检索 key 已签名的算法,例如:
// Load your public key from a file final PublicKey ecdsa256PublicKey = getPublicKey(...); final Algorithm algorithm = Algorithm.ECDSA256((ECPublicKey) ecdsa256PublicKey, null);
使用相应的算法验证其签名:
final DecodedJWT decodedJWT = JWT.decode("J.W.T[...]"); // Will throw a SignatureVerificationException if the token's signature is invalid algorithm.verify(decodedJWT);
关于java - 如何在 Java 中使用 token 和公钥验证 JWT 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414981/