• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_
6 #define NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_
7 
8 #include "build/build_config.h"
9 
10 #include <string>
11 
12 #include "net/http/http_auth_handler.h"
13 
14 #if defined(OS_WIN)
15 #include "net/http/http_auth_sspi_win.h"
16 #endif
17 
18 namespace net {
19 
20 // Handler for WWW-Authenticate: Negotiate protocol.
21 //
22 // See http://tools.ietf.org/html/rfc4178 and http://tools.ietf.org/html/rfc4559
23 // for more information about the protocol.
24 
25 class HttpAuthHandlerNegotiate : public HttpAuthHandler {
26  public:
27   HttpAuthHandlerNegotiate();
28 
29   virtual bool NeedsIdentity();
30 
31   virtual bool IsFinalRound();
32 
33   virtual std::string GenerateCredentials(const std::wstring& username,
34                                           const std::wstring& password,
35                                           const HttpRequestInfo* request,
36                                           const ProxyInfo* proxy);
37 
38 
39  protected:
40   virtual bool Init(std::string::const_iterator challenge_begin,
41                     std::string::const_iterator challenge_end);
42 
43  private:
44   ~HttpAuthHandlerNegotiate();
45 
46 #if defined(OS_WIN)
47   HttpAuthSSPI auth_sspi_;
48 #endif
49 };
50 
51 }  // namespace net
52 
53 #endif  // NET_HTTP_HTTP_AUTH_HANDLER_NEGOTIATE_H_
54