如何使用Java中的令牌和公钥验证JWT签名
问题描述:
我有一个字符串形式的令牌,我下载了公共证书并从中创建了一个公钥,如下所示。如何使用Java中的令牌和公钥验证JWT签名
但我不知道如何进行验证与这么多的信息。
我找到了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();
答
如果你问JSON WebToken,你可以按照下面的代码示例:
import javax.xml.bind.DatatypeConverter;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.Claims;
//Sample method to validate and read the JWT
private void parseJWT(String jwt) {
//This line will throw an exception if it is not a signed JWS (as expected)
Claims claims = Jwts.parser()
.setSigningKey(DatatypeConverter.parseBase64Binary(apiKey.getSecret()))
.parseClaimsJws(jwt).getBody();
System.out.println("ID: " + claims.getId());
System.out.println("Subject: " + claims.getSubject());
System.out.println("Issuer: " + claims.getIssuer());
System.out.println("Expiration: " + claims.getExpiration());
}
对于进一步的阅读,你可以参观点击here
什么对象是apiKey,如何获取它的秘密,因为我只有一个公钥证书文件。 – Arham
apiKey是com.stormpath.sdk.api.ApiKey的对象,用于保存apikey。 String path =“resources/.stormpath/apiKey.properties”; ApiKey apiKey = ApiKeys.builder()。setFileLocation(path).build(); – Yogi