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

Side by Side Diff: net/http/http_auth.h

Issue 1391053002: [net/http auth] Make HttpAuthHandler challenge handling asynchronous. Base URL: https://chromium.googlesource.com/chromium/src.git@auth-handler-init-split
Patch Set: Created 5 years, 2 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 unified diff | Download patch
« no previous file with comments | « no previous file | net/http/http_auth.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_H_ 5 #ifndef NET_HTTP_HTTP_AUTH_H_
6 #define NET_HTTP_HTTP_AUTH_H_ 6 #define NET_HTTP_HTTP_AUTH_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 IDENT_SRC_DEFAULT_CREDENTIALS, 86 IDENT_SRC_DEFAULT_CREDENTIALS,
87 }; 87 };
88 88
89 // Helper structure used by HttpNetworkTransaction to track the current 89 // Helper structure used by HttpNetworkTransaction to track the current
90 // identity being used for authorization. 90 // identity being used for authorization.
91 struct Identity { 91 struct Identity {
92 Identity(); 92 Identity();
93 ~Identity(); 93 ~Identity();
94 94
95 IdentitySource source; 95 IdentitySource source;
96 bool invalid; 96 bool invalid; // TODO(asanka): Invert this.
97 AuthCredentials credentials; 97 AuthCredentials credentials;
98 }; 98 };
99 99
100 // Get the name of the header containing the auth challenge (either 100 // Get the name of the header containing the auth challenge (either
101 // WWW-Authenticate or Proxy-Authenticate). 101 // WWW-Authenticate or Proxy-Authenticate).
102 static std::string GetChallengeHeaderName(Target target); 102 static std::string GetChallengeHeaderName(Target target);
103 103
104 // Get the name of the header where the credentials go 104 // Get the name of the header where the credentials go
105 // (either Authorization or Proxy-Authorization). 105 // (either Authorization or Proxy-Authorization).
106 static std::string GetAuthorizationHeaderName(Target target); 106 static std::string GetAuthorizationHeaderName(Target target);
107 107
108 // Returns a string representation of a Target value that can be used in log 108 // Returns a string representation of a Target value that can be used in log
109 // messages. 109 // messages.
110 static std::string GetAuthTargetString(Target target); 110 static std::string GetAuthTargetString(Target target);
111 111
112 // Iterate through the challenge headers, and pick the best one that we
113 // support. Obtains the implementation class for handling the challenge, and
114 // passes it back in |*handler|. If no supported challenge was found,
115 // |*handler| is set to NULL.
116 //
117 // |disabled_schemes| is the set of schemes that we should not use.
118 //
119 // |origin| is used by the NTLM and Negotiation authentication scheme to
120 // construct the service principal name. It is ignored by other schemes.
121 static void ChooseBestChallenge(
122 HttpAuthHandlerFactory* http_auth_handler_factory,
123 const HttpResponseHeaders* headers,
124 Target target,
125 const GURL& origin,
126 const HttpAuthSchemeSet& disabled_schemes,
127 const BoundNetLog& net_log,
128 scoped_ptr<HttpAuthHandler>* handler);
129
130 // Handle a 401/407 response from a server/proxy after a previous
131 // authentication attempt. For connection-based authentication schemes, the
132 // new response may be another round in a multi-round authentication sequence.
133 // For request-based schemes, a 401/407 response is typically treated like a
134 // rejection of the previous challenge, except in the Digest case when a
135 // "stale" attribute is present.
136 //
137 // |handler| must be non-NULL, and is the HttpAuthHandler from the previous
138 // authentication round.
139 //
140 // |headers| must be non-NULL and contain the new HTTP response.
141 //
142 // |target| specifies whether the authentication challenge response came
143 // from a server or a proxy.
144 //
145 // |disabled_schemes| are the authentication schemes to ignore.
146 //
147 // |challenge_used| is the text of the authentication challenge used in
148 // support of the returned AuthorizationResult. If no headers were used for
149 // the result (for example, all headers have unknown authentication schemes),
150 // the value is cleared.
151 static AuthorizationResult HandleChallengeResponse(
152 HttpAuthHandler* handler,
153 const HttpResponseHeaders* headers,
154 Target target,
155 const HttpAuthSchemeSet& disabled_schemes,
156 std::string* challenge_used);
157
158 // RFC 7235 states that an authentication scheme is a case insensitive token. 112 // RFC 7235 states that an authentication scheme is a case insensitive token.
159 // This function checks whether |scheme| is a token AND is lowercase. 113 // This function checks whether |scheme| is a token AND is lowercase.
160 static bool IsValidNormalizedScheme(const std::string& scheme); 114 static bool IsValidNormalizedScheme(const std::string& scheme);
161 }; 115 };
162 116
163 } // namespace net 117 } // namespace net
164 118
165 #endif // NET_HTTP_HTTP_AUTH_H_ 119 #endif // NET_HTTP_HTTP_AUTH_H_
OLDNEW
« no previous file with comments | « no previous file | net/http/http_auth.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698