コード例 #1
0
  /**
   * 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);
    }
  }