diff --git a/src/Httpful/Request.php b/src/Httpful/Request.php index c04d230..bbfc3b3 100644 --- a/src/Httpful/Request.php +++ b/src/Httpful/Request.php @@ -175,6 +175,14 @@ public function hasDigestAuth() return isset($this->password) && isset($this->username) && $this->additional_curl_opts[CURLOPT_HTTPAUTH] == CURLAUTH_DIGEST; } + /** + * @return bool Is this request setup for negotiate auth? + */ + public function hasNegotiateAuth() + { + return isset($this->password) && isset($this->username) && $this->additional_curl_opts[CURLOPT_HTTPAUTH] == CURLAUTH_NEGOTIATE; + } + /** * Specify a HTTP timeout * @param float|int $timeout seconds to timeout the HTTP call @@ -304,6 +312,27 @@ public function authenticateWithDigest($username, $password) return $this->digestAuth($username, $password); } + /** + * User Negotiate Auth. + * @param string $username + * @param string $password + * @return Request + */ + public function negotiateAuth($username, $password) + { + $this->addOnCurlOption(CURLOPT_HTTPAUTH, CURLAUTH_NEGOTIATE); + if (!empty($_SERVER['KRB5CCNAME'])) { + putenv('KRB5CCNAME=' . $_SERVER['KRB5CCNAME']); + } + return $this->basicAuth($username, $password); + } + + // @alias of negotiateAuth + public function authenticateWithNegotiate($username, $password) + { + return $this->negotiateAuth($username, $password); + } + /** * @return bool is this request setup for client side cert? */