OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ | 5 #ifndef NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ |
6 #define NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ | 6 #define NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "net/base/address_list.h" | 11 #include "net/base/address_list.h" |
12 #include "net/base/net_export.h" | 12 #include "net/base/net_export.h" |
13 #include "net/http/http_auth_handler.h" | 13 #include "net/http/http_auth_handler.h" |
14 #include "net/http/http_auth_handler_factory.h" | 14 #include "net/http/http_auth_handler_factory.h" |
15 | 15 |
16 #if defined(OS_WIN) | 16 #if defined(OS_ANDROID) |
| 17 #include "net/android/http_auth_negotiate_android.h" |
| 18 #elif defined(OS_WIN) |
17 #include "net/http/http_auth_sspi_win.h" | 19 #include "net/http/http_auth_sspi_win.h" |
18 #elif defined(OS_POSIX) | 20 #elif defined(OS_POSIX) |
19 #include "net/http/http_auth_gssapi_posix.h" | 21 #include "net/http/http_auth_gssapi_posix.h" |
20 #endif | 22 #endif |
21 | 23 |
22 namespace net { | 24 namespace net { |
23 | 25 |
24 class HostResolver; | 26 class HostResolver; |
25 class SingleRequestHostResolver; | 27 class SingleRequestHostResolver; |
26 class URLSecurityManager; | 28 class URLSecurityManager; |
27 | 29 |
28 // Handler for WWW-Authenticate: Negotiate protocol. | 30 // Handler for WWW-Authenticate: Negotiate protocol. |
29 // | 31 // |
30 // See http://tools.ietf.org/html/rfc4178 and http://tools.ietf.org/html/rfc4559 | 32 // See http://tools.ietf.org/html/rfc4178 and http://tools.ietf.org/html/rfc4559 |
31 // for more information about the protocol. | 33 // for more information about the protocol. |
32 | 34 |
33 class NET_EXPORT_PRIVATE HttpAuthHandlerNegotiate : public HttpAuthHandler { | 35 class NET_EXPORT_PRIVATE HttpAuthHandlerNegotiate : public HttpAuthHandler { |
34 public: | 36 public: |
35 #if defined(OS_WIN) | 37 #if defined(OS_ANDROID) |
| 38 typedef net::android::HttpAuthNegotiateAndroid AuthSystem; |
| 39 // For Android this isn't a library, but for the Android Account type, which |
| 40 // indirectly identifies the Kerberos/SPNEGO authentication app. |
| 41 typedef const std::string AuthLibrary; |
| 42 #elif defined(OS_WIN) |
36 typedef SSPILibrary AuthLibrary; | 43 typedef SSPILibrary AuthLibrary; |
37 typedef HttpAuthSSPI AuthSystem; | 44 typedef HttpAuthSSPI AuthSystem; |
38 #elif defined(OS_POSIX) | 45 #elif defined(OS_POSIX) |
39 typedef GSSAPILibrary AuthLibrary; | 46 typedef GSSAPILibrary AuthLibrary; |
40 typedef HttpAuthGSSAPI AuthSystem; | 47 typedef HttpAuthGSSAPI AuthSystem; |
41 #endif | 48 #endif |
42 | 49 |
43 class NET_EXPORT_PRIVATE Factory : public HttpAuthHandlerFactory { | 50 class NET_EXPORT_PRIVATE Factory : public HttpAuthHandlerFactory { |
44 public: | 51 public: |
45 Factory(); | 52 Factory(); |
(...skipping 12 matching lines...) Expand all Loading... |
58 // generated by this factory should include the port number of the server | 65 // generated by this factory should include the port number of the server |
59 // they are authenticating to when constructing a Kerberos SPN. The default | 66 // they are authenticating to when constructing a Kerberos SPN. The default |
60 // value is false. | 67 // value is false. |
61 bool use_port() const { return use_port_; } | 68 bool use_port() const { return use_port_; } |
62 void set_use_port(bool use_port) { use_port_ = use_port; } | 69 void set_use_port(bool use_port) { use_port_ = use_port; } |
63 | 70 |
64 void set_host_resolver(HostResolver* host_resolver); | 71 void set_host_resolver(HostResolver* host_resolver); |
65 | 72 |
66 // Sets the system library to use, thereby assuming ownership of | 73 // Sets the system library to use, thereby assuming ownership of |
67 // |auth_library|. | 74 // |auth_library|. |
68 void set_library(AuthLibrary* auth_library) { | 75 void set_library(AuthLibrary* auth_provider) { |
69 auth_library_.reset(auth_library); | 76 auth_library_.reset(auth_provider); |
70 } | 77 } |
71 | 78 |
72 int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge, | 79 int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge, |
73 HttpAuth::Target target, | 80 HttpAuth::Target target, |
74 const GURL& origin, | 81 const GURL& origin, |
75 CreateReason reason, | 82 CreateReason reason, |
76 int digest_nonce_count, | 83 int digest_nonce_count, |
77 const BoundNetLog& net_log, | 84 const BoundNetLog& net_log, |
78 scoped_ptr<HttpAuthHandler>* handler) override; | 85 scoped_ptr<HttpAuthHandler>* handler) override; |
79 | 86 |
80 private: | 87 private: |
81 bool disable_cname_lookup_; | 88 bool disable_cname_lookup_; |
82 bool use_port_; | 89 bool use_port_; |
83 HostResolver* resolver_; | 90 HostResolver* resolver_; |
84 #if defined(OS_WIN) | 91 #if defined(OS_WIN) |
85 ULONG max_token_length_; | 92 ULONG max_token_length_; |
86 bool first_creation_; | 93 bool first_creation_; |
87 #endif | 94 #endif |
88 bool is_unsupported_; | 95 bool is_unsupported_; |
89 scoped_ptr<AuthLibrary> auth_library_; | 96 scoped_ptr<AuthLibrary> auth_library_; |
90 }; | 97 }; |
91 | 98 |
92 HttpAuthHandlerNegotiate(AuthLibrary* sspi_library, | 99 HttpAuthHandlerNegotiate(AuthLibrary* auth_library, |
93 #if defined(OS_WIN) | 100 #if defined(OS_WIN) |
94 ULONG max_token_length, | 101 ULONG max_token_length, |
95 #endif | 102 #endif |
96 URLSecurityManager* url_security_manager, | 103 URLSecurityManager* url_security_manager, |
97 HostResolver* host_resolver, | 104 HostResolver* host_resolver, |
98 bool disable_cname_lookup, | 105 bool disable_cname_lookup, |
99 bool use_port); | 106 bool use_port); |
100 | 107 |
101 ~HttpAuthHandlerNegotiate() override; | 108 ~HttpAuthHandlerNegotiate() override; |
102 | 109 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 std::string* auth_token_; | 165 std::string* auth_token_; |
159 | 166 |
160 State next_state_; | 167 State next_state_; |
161 | 168 |
162 const URLSecurityManager* url_security_manager_; | 169 const URLSecurityManager* url_security_manager_; |
163 }; | 170 }; |
164 | 171 |
165 } // namespace net | 172 } // namespace net |
166 | 173 |
167 #endif // NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ | 174 #endif // NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_ |
OLD | NEW |