public void destroyTicketGrantingTicket(final CasRestProfile profile) {
   HttpURLConnection connection = null;
   try {
     final URL endpointURL = new URL(getCasRestAuthenticator().getCasRestUrl());
     final URL deleteURL =
         new URL(endpointURL, endpointURL.getPath() + "/" + profile.getTicketGrantingTicketId());
     connection = HttpUtils.openDeleteConnection(deleteURL);
     final int responseCode = connection.getResponseCode();
     if (responseCode != HttpConstants.OK) {
       throw new TechnicalException(
           "TGT delete request for `"
               + profile
               + "` failed: "
               + HttpUtils.buildHttpErrorMessage(connection));
     }
   } catch (final IOException e) {
     throw new TechnicalException(e);
   } finally {
     HttpUtils.closeConnection(connection);
   }
 }
  public TokenCredentials requestServiceTicket(
      final String serviceURL, final CasRestProfile profile) {
    HttpURLConnection connection = null;
    try {
      final URL endpointURL = new URL(getCasRestAuthenticator().getCasRestUrl());
      final URL ticketURL =
          new URL(endpointURL, endpointURL.getPath() + "/" + profile.getTicketGrantingTicketId());

      connection = HttpUtils.openPostConnection(ticketURL);
      final String payload = HttpUtils.encodeQueryParam("service", serviceURL);

      final BufferedWriter out =
          new BufferedWriter(
              new OutputStreamWriter(connection.getOutputStream(), HttpConstants.UTF8_ENCODING));
      out.write(payload);
      out.close();

      final int responseCode = connection.getResponseCode();
      if (responseCode == HttpConstants.OK) {
        try (final BufferedReader in =
            new BufferedReader(
                new InputStreamReader(connection.getInputStream(), HttpConstants.UTF8_ENCODING))) {
          return new TokenCredentials(in.readLine(), getClass().getSimpleName());
        }
      }
      throw new TechnicalException(
          "Service ticket request for `"
              + profile
              + "` failed: "
              + HttpUtils.buildHttpErrorMessage(connection));
    } catch (final IOException e) {
      throw new TechnicalException(e);
    } finally {
      HttpUtils.closeConnection(connection);
    }
  }