我有JWT 令牌,我想对其进行解码。如果我在这里在线执行此操作:https ://jwt.io 。我得到了完整的答复。
令牌 =
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5UQXhabU14TkRNeVpEZzNNVFUxWkdNME16RXpPREpoWldJNE5ETmxaRFUxT0dGa05qRmlNUSJ9.==。g3CZ6PfirbN9rUHDhWxXNbqA49ne2Fam_SXWiKUBfQN10ddLIKrY8L8xalQ0DX3LiQg0TmdYspR4vVd3Mfji919UJEFSe894JD-PqFTFcvVsLgLm9pWNoyXNVEz6gTiR5JM_UlAPZ4N8FjCla9tMjRfiG-l4gvdmXhF84_a7IwwVLY7DkOs0m-7UK3evB005QZJ5_vmYEtAFV6pFzSt3Jz_fqEPR4RIkrjUIei7m4KyQ3QEl-_ZuhPn80UrACbFqyIQ0Fl71cMQ5V28AXKt8AitGT53XL0LK-cnNmQqyy8WTNRaWmVAZIW7XOCcHBkg9diWy-uZvHSL3pig9Pfr0sg==
在线回复: 标题:
{
"typ": "JWT",
"alg": "RS256",
"x5t": "NTAxZmMxNDMyZDg3MTU1ZGM0MzEzODJhZWI4NDNlZDU1OGFkNjFiMQ"
}
有效载荷:
{
"aud": "http://org.wso2.apimgt/gateway",
"sub": "Sampath",
"application": {
"id": 3,
"name": "Test JWT",
"tier": "Unlimited",
"owner": "Sampath"
},
"scope": "am_application_scope default",
"iss": "https://localhost:9443/oauth2/token",
"keytype": "PRODUCTION",
"subscribedAPIs": [],
"consumerKey": "FPGkgJ6wP0fV1KMKqdEo7_U5dSEa",
"exp": 1549542345,
"iat": 1549538745278,
"jti": "c058831a-7c84-40da-a1d8-85db4a6c68d3"
}
我们如何使用 Java 代码来做到这一点?
不知何故我正在使用
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.2</version>
</dependency>
代码:
@SpringBootApplication
public class JwtDecodeApplication implements CommandLineRunner{
public static void main(String[] args) {
SpringApplication.run(JwtDecodeApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5UQXhabU14TkRNeVpEZzNNVFUxWkdNME16RXpPREpoWldJNE5ETmxaRFUxT0dGa05qRmlNUSJ9.eyJhdWQiOiJodHRwOlwvXC9vcmcud3NvMi5hcGltZ3RcL2dhdGV3YXkiLCJzdWIiOiJTYW1wYXRoIiwiYXBwbGljYXRpb24iOnsiaWQiOjMsIm5hbWUiOiJUZXN0IEpXVCIsInRpZXIiOiJVbmxpbWl0ZWQiLCJvd25lciI6IlNhbXBhdGgifSwic2NvcGUiOiJhbV9hcHBsaWNhdGlvbl9zY29wZSBkZWZhdWx0IiwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5NDQzXC9vYXV0aDJcL3Rva2VuIiwia2V5dHlwZSI6IlBST0RVQ1RJT04iLCJzdWJzY3JpYmVkQVBJcyI6W10sImNvbnN1bWVyS2V5IjoiRlBHa2dKNndQMGZWMUtNS3FkRW83X1U1ZFNFYSIsImV4cCI6MTU0OTU0MjM0NSwiaWF0IjoxNTQ5NTM4NzQ1Mjc4LCJqdGkiOiJjMDU4ODMxYS03Yzg0LTQwZGEtYTFkOC04NWRiNGE2YzY4ZDMifQ==.g3CZ6PfirbN9rUHDhWxXNbqA49ne2Fam_SXWiKUBfQN10ddLIKrY8L8xalQ0DX3LiQg0TmdYspR4vVd3Mfji919UJEFSe894JD-PqFTFcvVsLgLm9pWNoyXNVEz6gTiR5JM_UlAPZ4N8FjCla9tMjRfiG-l4gvdmXhF84_a7IwwVLY7DkOs0m-7UK3evB005QZJ5_vmYEtAFV6pFzSt3Jz_fqEPR4RIkrjUIei7m4KyQ3QEl-_ZuhPn80UrACbFqyIQ0Fl71cMQ5V28AXKt8AitGT53XL0LK-cnNmQqyy8WTNRaWmVAZIW7XOCcHBkg9diWy-uZvHSL3pig9Pfr0sg==";
try {
DecodedJWT jwt = JWT.decode(token);
// Headers
String header = jwt.getHeader();
System.out.println("HEADER = "+header);
// claims
Map<String, Claim> claims = jwt.getClaims();
claims.forEach((k,v) -> System.out.println("KEY = "+k + ", VALUE ="+v));
System.out.println("-----------------------------------------------");
System.out.println("Subject = "+jwt.getSubject());
System.out.println("Algorithm = "+jwt.getAlgorithm());
System.out.println("Issuer = "+jwt.getIssuer());
System.out.println("Payload = "+jwt.getPayload());
System.out.println("Token = "+jwt.getToken());
System.out.println("Subject = "+jwt.getContentType());
System.out.println("Id = "+jwt.getId());
System.out.println("KeyId = "+jwt.getKeyId());
System.out.println("Signature = "+jwt.getSignature());
System.out.println("ExpiresAt = "+jwt.getExpiresAt());
System.out.println("IssuedAt = "+jwt.getIssuedAt());
System.out.println("NotBefore = "+jwt.getNotBefore());
System.out.println("Audience = "+jwt.getAudience());
} catch (JWTDecodeException e){
//Invalid token
System.out.println(e);
}
}
}