/** Generates a valid Atom id. */
  public String generateAtomId(String input) {
    if (input == null) {
      return ID_DUMMY;
    }

    return ID_PREFIX + Base64.encodeBytes(IOUtils.toUTF8Bytes(input));
  }
  private String getSecurityToken() {
    try {
      Class<?> wsSubjectClass =
          ClassLoaderUtil.loadClass("com.ibm.websphere.security.auth.WSSubject");
      Class<?> wsCredentialClass =
          ClassLoaderUtil.loadClass("com.ibm.websphere.security.cred.WSCredential");

      // Get current security subject
      Method m = wsSubjectClass.getMethod("getRunAsSubject", new Class[0]);
      Subject securitySubject = (Subject) m.invoke(null, new Object[0]);
      if (securitySubject != null) {
        // Get all security credentials from the security subject
        Set<?> securityCredentials = securitySubject.getPublicCredentials(wsCredentialClass);

        // Get the first credential
        Object securityCredential = securityCredentials.iterator().next();
        String user =
            invokeSecurityCredentialMethod(
                wsCredentialClass, securityCredential, "getSecurityName");

        if (user.equalsIgnoreCase("UNAUTHENTICATED")) {
          if (LOG.isDebugEnabled()) {
            LOG.debug("User = UNAUTHENTICATED");
          }
          return null;
        }

        byte[] token =
            invokeSecurityCredentialMethod(
                wsCredentialClass, securityCredential, "getCredentialToken");
        if (token == null) {
          return null;
        }

        return Base64.encodeBytes(token);
      }
    } catch (Exception e) {
      throw new CmisRuntimeException("Could not build SOAP header: " + e.getMessage(), e);
    }

    return null;
  }