我希望为给定的头部、负载和密钥生成一个JWT。
我的头部:
{ "typ": "JWT", "alg": "HS256" }
我的负载:
{ "iss": "46181382", "ist": "project", "iat": 1536225835, "exp": 1536226835, "jti": "abcdefghi" }
我的密钥:
105446462291847624638651561dfg156148df941819498
这是我的Java代码,它已经创建了一个JWT。但我认为密钥没有被包含在其中。因为一旦我将该JWT用作Tokbox API调用中的头部,我会收到以下响应。
我的头部:
{ "typ": "JWT", "alg": "HS256" }
我的负载:
{ "iss": "46181382", "ist": "project", "iat": 1536225835, "exp": 1536226835, "jti": "abcdefghi" }
我的密钥:
105446462291847624638651561dfg156148df941819498
这是我的Java代码,它已经创建了一个JWT。但我认为密钥没有被包含在其中。因为一旦我将该JWT用作Tokbox API调用中的头部,我会收到以下响应。
{
"code": -1,
"message": "Invalid signature",
"description": "Invalid signature"
}
这里是代码:
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("105446462291847624638651561dfg156148df941819498");
Key signingKey = new SecretKeySpec(apiKeySecretBytes, SignatureAlgorithm.HS256.getJcaName());
Map map = new HashMap<String,Object>();
map.put("alg","HS256");
map.put("typ","JWT");
String jwt = Jwts.builder()
.setHeader(map)
.claim("iss", "46181382")
.claim("ist", "project")
.claim("iat", currentTimeSeconds())
.claim("exp", expireTimeSeconds())
.claim("jti", "abcdefghi")
.signWith(SignatureAlgorithm.HS256,signingKey)
.compact();
currentTimeSeconds()和expireTimeSeconds()是我自己编写的方法,我相信它们没有问题。
但是,我不确定.signWith()方法是否正确。
请问有人能帮我吗?
谢谢。