/** * Generates base64 representation of JWT token sign using "RS256" algorithm * * <p>getHeader().toBase64UrlEncode() + "." + getClaim().toBase64UrlEncode() + "." + sign * * @return base64 representation of JWT token */ public String sign() { for (JwtTokenDecorator decorator : JwtTokenDecorator.all()) { decorator.decorate(this); } /** * kid might have been set already by using {@link #header} or {@link JwtTokenDecorator}, if * present use it otherwise use the default kid */ String keyId = (String) header.get(HeaderParameterNames.KEY_ID); if (keyId == null) { keyId = DEFAULT_KEY_ID; } JwtRsaDigitalSignatureKey rsaDigitalSignatureConfidentialKey = new JwtRsaDigitalSignatureKey(keyId); try { return rsaDigitalSignatureConfidentialKey.sign(claim); } catch (JoseException e) { String msg = "Failed to sign JWT token: " + e.getMessage(); logger.error(msg); throw new ServiceException.UnexpectedErrorException(msg, e); } }