@Nonnull
public static String generateJwtToken(TenantContext tenantContext, HttpMethod httpMethod, final URL url) throws UnsupportedEncodingException {
final long issuedAt = System.currentTimeMillis() / 1000L;
final long expiresAt = issuedAt + 180L;
JwtJsonBuilder jwtBuilder = new JsonSmartJwtJsonBuilder()
.issuedAt(issuedAt)
.expirationTime(expiresAt)
.issuer(tenantContext.getKey());
CanonicalHttpUriRequest canonical = new CanonicalHttpUriRequest(httpMethod.toString(),
URLUtil.buildPath(url),
"/",
URLUtil.buildQueryValueMap(url));
try {
JwtClaimsBuilder.appendHttpRequestClaims(jwtBuilder, canonical);
} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
log.error("Failed to append HTTP request claims", e);
}
JwtWriterFactory jwtWriterFactory = new NimbusJwtWriterFactory();
String jwtbuilt = jwtBuilder.build();
String jwtToken = jwtWriterFactory.macSigningWriter(SigningAlgorithm.HS256,
tenantContext.getSharedSecret()).jsonToJwt(jwtbuilt);
return jwtToken;
}
}