2016-08-12 5 views
4

JWTをデコードするのはApache Commons Codecです。私たちはそれをどうやってできるのですか?Apache Commons Codecを使ってjavaでJWT(ヘッダと本文)をデコードする方法は?

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX0FETUlOIiwiaXNzIjoibXlzZ 
WxmIiwiZXhwIjoxNDcxMDg2MzgxfQ.1EI2haSz9aMsHjFUXNVz2Z4mtC0nMdZo6bo3-x-aRpw 

これはHeaderBodySignature一部を取得する必要があります。コードは何ですか?

答えて

7

ここに行く:

import org.apache.commons.codec.binary.Base64; 
@Test 
    public void testDecodeJWT(){ 
     String jwtToken = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX0FETUlOIiwiaXNzIjoibXlzZWxmIiwiZXhwIjoxNDcxMDg2MzgxfQ.1EI2haSz9aMsHjFUXNVz2Z4mtC0nMdZo6bo3-x-aRpw"; 
     System.out.println("------------ Decode JWT ------------"); 
     String[] split_string = jwtToken.split("\\."); 
     String base64EncodedHeader = split_string[0]; 
     String base64EncodedBody = split_string[1]; 
     String base64EncodedSignature = split_string[2]; 

     System.out.println("~~~~~~~~~ JWT Header ~~~~~~~"); 
     Base64 base64Url = new Base64(true); 
     String header = new String(base64Url.decode(base64EncodedHeader)); 
     System.out.println("JWT Header : " + header); 


     System.out.println("~~~~~~~~~ JWT Body ~~~~~~~"); 
     String body = new String(base64Url.decode(base64EncodedBody)); 
     System.out.println("JWT Body : "+body);   
    } 

以下の出力:

------------ Decode JWT ------------ 
~~~~~~~~~ JWT Header ~~~~~~~ 
JWT Header : {"alg":"HS256"} 
~~~~~~~~~ JWT Body ~~~~~~~ 
JWT Body : {"sub":"test","roles":"ROLE_ADMIN","iss":"myself","exp":1471086381} 
関連する問題