Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1337)

Unified Diff: net/http/http_auth_handler_negotiate.h

Issue 1535019: Kerberos SPN generation for Negotiate challenges (Closed)
Patch Set: Fix to GetCanonicalName that is another CL. Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_auth_handler_factory.h ('k') | net/http/http_auth_handler_negotiate_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_auth_handler_negotiate.h
diff --git a/net/http/http_auth_handler_negotiate.h b/net/http/http_auth_handler_negotiate.h
index f34664cacbcabe98c0a60b75adb680e8215c9fe9..3450fc4930b947662567821b0027c36165a9acd3 100644
--- a/net/http/http_auth_handler_negotiate.h
+++ b/net/http/http_auth_handler_negotiate.h
@@ -9,6 +9,7 @@
#include <string>
+#include "net/base/address_list.h"
#include "net/http/http_auth_handler.h"
#include "net/http/http_auth_handler_factory.h"
@@ -18,6 +19,8 @@
namespace net {
+class SingleRequestHostResolver;
+
// Handler for WWW-Authenticate: Negotiate protocol.
//
// See http://tools.ietf.org/html/rfc4178 and http://tools.ietf.org/html/rfc4559
@@ -30,6 +33,22 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
Factory();
virtual ~Factory();
+ // |disable_cname_lookup()| and |set_disable_cname_lookup()| get/set whether
+ // the auth handlers generated by this factory should skip looking up the
+ // canonical DNS name of the the host that they are authenticating to when
+ // generating the SPN. The default value is false.
+ bool disable_cname_lookup() const { return disable_cname_lookup_; }
+ void set_disable_cname_lookup(bool disable_cname_lookup) {
+ disable_cname_lookup_ = disable_cname_lookup;
+ }
+
+ // |use_port()| and |set_use_port()| get/set whether the auth handlers
+ // generated by this factory should include the port number of the server
+ // they are authenticating to when constructing a Kerberos SPN. The default
+ // value is false.
+ bool use_port() const { return use_port_; }
+ void set_use_port(bool use_port) { use_port_ = use_port; }
+
virtual int CreateAuthHandler(HttpAuth::ChallengeTokenizer* challenge,
HttpAuth::Target target,
const GURL& origin,
@@ -47,6 +66,8 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
}
#endif // defined(OS_WIN)
private:
+ bool disable_cname_lookup_;
+ bool use_port_;
#if defined(OS_WIN)
ULONG max_token_length_;
bool first_creation_;
@@ -56,7 +77,8 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
};
#if defined(OS_WIN)
- HttpAuthHandlerNegotiate(SSPILibrary* sspi_library, ULONG max_token_length);
+ HttpAuthHandlerNegotiate(SSPILibrary* sspi_library, ULONG max_token_length,
+ bool disable_cname_lookup, bool use_port);
#else
HttpAuthHandlerNegotiate();
#endif
@@ -67,6 +89,8 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
virtual bool SupportsDefaultCredentials();
+ virtual bool NeedsCanonicalName();
+
virtual int GenerateAuthToken(const std::wstring& username,
const std::wstring& password,
const HttpRequestInfo* request,
@@ -77,6 +101,10 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
const ProxyInfo* proxy,
std::string* auth_token);
+ virtual int ResolveCanonicalName(HostResolver* host_resolver,
+ CompletionCallback* callback,
+ const BoundNetLog& net_log);
+
protected:
virtual bool Init(HttpAuth::ChallengeTokenizer* challenge);
@@ -84,7 +112,17 @@ class HttpAuthHandlerNegotiate : public HttpAuthHandler {
~HttpAuthHandlerNegotiate();
#if defined(OS_WIN)
+ void OnResolveCanonicalName(int result);
+ std::wstring CreateSPN(const AddressList& address_list, const GURL& orign);
+
HttpAuthSSPI auth_sspi_;
+ AddressList address_list_;
+ scoped_ptr<SingleRequestHostResolver> single_resolve_;
+ CompletionCallback* user_callback_;
+ CompletionCallbackImpl<HttpAuthHandlerNegotiate> resolve_cname_callback_;
+ bool disable_cname_lookup_;
+ bool use_port_;
+ std::wstring spn_;
#endif
};
« no previous file with comments | « net/http/http_auth_handler_factory.h ('k') | net/http/http_auth_handler_negotiate_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698