Я хочу сгенерировать jwt для заданного заголовка, полезной нагрузки и секретного ключа.
мой заголовок;
{
"typ": "JWT",
"alg": "HS256"
}
моя полезная нагрузка;
{
"iss": "46181382",
"ist": "project",
"iat": 1536225835,
"exp": 1536226835,
"jti": "abcdefghi"
}
мой секретный ключ;
105446462291847624638651561dfg156148df941819498
вот мой java-код, он уже создает jwt. но я думаю, что секретный ключ не включается в него. потому что, как только я использую этот jwt для моего заголовка в вызове API tokbox, я получаю следующий ответ.
{
"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 ().
Может кто-нибудь, пожалуйста, помогите мне.
Спасибо.