java - 如何在 Java 中使用 token 和公钥验证 JWT 签名

标签 java jwt

我有一个字符串形式的 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:

  1. 检索 key 已签名的算法,例如:

    // Load your public key from a file
    final PublicKey ecdsa256PublicKey = getPublicKey(...);
    final Algorithm algorithm = Algorithm.ECDSA256((ECPublicKey) ecdsa256PublicKey, null);
    
  2. 使用相应的算法验证其签名:

    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/

相关文章:

jwt - npm 模块 jsonwebtoken 和 jwt-simple 有什么区别?

oauth - OAuth2:使用JWT客户端身份验证的JWT授权授予和客户端凭据授予之间有什么区别?

java - Spring Boot 中的 JDBC 授权

java - 在现有字符串之间添加新字符串

php - AdonisJs - 自定义 JWT uid 字段键

asp.net-mvc - 401 未经授权 : WWW-Authenticate: Bearer

javascript - 我是否必须将 token 存储在 cookie、localstorage 或 session 中?

java - 通过 Java 中对象的深(与浅)大小限制缓存?

java - Android Studio 中的 ImageButton 问题

java - Spring Security - 连续登录2次行为