2017-07-31 145 views
1

我有一個字符串形式的令牌,我下載了公共證書並從中創建了一個公鑰,如下所示。如何使用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(); 

回答

0

如果你問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

+0

什麼對象是apiKey,如何獲取它的祕密,因爲我只有一個公鑰證書文件。 – Arham

+0

apiKey是com.stormpath.sdk.api.ApiKey的對象,用於保存apikey。 String path =「resources/.stormpath/apiKey.properties」; ApiKey apiKey = ApiKeys.builder()。setFileLocation(path).build(); – Yogi