java写一段解析jwt的代码
时间: 2023-11-04 18:15:00 浏览: 45
下面是使用Java解析JWT的示例代码:
```java
import java.util.Base64;
import com.google.gson.Gson;
public class JwtParser {
public static void main(String[] args) {
String jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
+ ".eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ"
+ ".SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
String[] jwtParts = jwt.split("\\.");
String header = new String(Base64.getDecoder().decode(jwtParts[0]));
String payload = new String(Base64.getDecoder().decode(jwtParts[1]));
String signature = jwtParts[2];
Gson gson = new Gson();
JwtHeader jwtHeader = gson.fromJson(header, JwtHeader.class);
JwtPayload jwtPayload = gson.fromJson(payload, JwtPayload.class);
System.out.println("Header: " + jwtHeader);
System.out.println("Payload: " + jwtPayload);
System.out.println("Signature: " + signature);
}
static class JwtHeader {
String alg;
String typ;
@Override
public String toString() {
return "alg=" + alg + ", typ=" + typ;
}
}
static class JwtPayload {
String sub;
String name;
long iat;
@Override
public String toString() {
return "sub=" + sub + ", name=" + name + ", iat=" + iat;
}
}
}
```
在这个示例中,我们假设JWT的格式为“header.payload.signature”,其中header和payload是Base64编码的JSON字符串,而signature是使用HMAC算法生成的签名。
我们使用Java的Base64和Gson库来对JWT进行解析。首先,我们将JWT字符串分成三个部分,并使用Base64解码header和payload部分。然后,我们使用Gson将header和payload解析为Java对象。
最后,我们将解码的header和payload以及原始的signature打印出来。如果需要验证JWT的签名,可以使用相应的加密算法对header和payload的组合进行签名,然后将生成的签名与JWT的signature进行比较。