public AccessToken authUser(
      String consumerKey, String username, String password, String consumerSecret)
      throws N0ticeException {
    log.info(
        "Attempting to auth user: "******", "
            + username
            + ", "
            + password
            + ", "
            + consumerSecret);
    OAuthRequest request = createOauthRequest(Verb.POST, apiUrl + "/user/auth");
    addBodyParameter(request, "consumerkey", consumerKey);
    addBodyParameter(request, "username", username);
    addBodyParameter(request, "password", password);

    // Manually sign this request using the consumer secret rather than the access key/access
    // secret.
    addBodyParameter(request, "oauth_signature_method", "HMAC-SHA1");
    addBodyParameter(request, "oauth_version", "1.0");
    addBodyParameter(request, "oauth_timestamp", Long.toString(DateTimeUtils.currentTimeMillis()));
    final String effectiveUrl = request.getCompleteUrl() + "?" + request.getBodyContents();
    addBodyParameter(request, "oauth_signature", sign(effectiveUrl, consumerSecret));

    final Response response = request.send();
    final String responseBody = response.getBody();
    if (response.getCode() == 200) {
      return new UserParser().parseAuthUserResponse(responseBody);
    }

    handleExceptions(response);
    throw new N0ticeException(response.getBody());
  }