2016-08-12 9 views
4

Я ищу декодировать следующие JWT используя Apache Commons Codec. Как мы можем это сделать?Как декодировать JWT (заголовок и тело) в java, используя Apache Commons Codec?

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0Iiwicm9sZXMiOiJST0xFX0FETUlOIiwiaXNzIjoibXlzZ 
WxmIiwiZXhwIjoxNDcxMDg2MzgxfQ.1EI2haSz9aMsHjFUXNVz2Z4mtC0nMdZo6bo3-x-aRpw 

Это должно получить Header, Body и Signature часть. Что такое код?

ответ

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}