我正在使用以下代码创建 JWT:
long now = Instant.now().getEpochSecond();
long exp = now + TimeUnit.HOURS.toSeconds(1);
long nbf = now - TimeUnit.MINUTES.toSeconds(5);
String jwt = Jwts.builder()
.setSubject("d45049c3-3441-40ef-ab4d-b9cd86a17225")
.claim("iss", "d45049c3-3441-40ef-ab4d-b9cd86a17225")
.claim("aud", "https://apporchard.epic.com/interconnect-aocurprd-oauth/oauth2/token")
.claim("jti", UUID.randomUUID().toString())
.claim("exp", exp)
.claim("nbf", nbf)
.claim("iat", now)
.signWith(key, SignatureAlgorithm.RS384)
.compact();
但是当我查看创建的 JWT 的 JSON 版本时,标头是
{
"alg": "RS384"
}
它缺少“典型”字段。我认为这个字段是强制性的。