diff options
author | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 18:12:26 +0000 |
---|---|---|
committer | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 18:12:26 +0000 |
commit | 65d3438acf8e8e4f525c23b00c46b7a1330b00ee (patch) | |
tree | 83a0c6c4299aaa901feea780b6ef6f2ec2f3c251 /net/http/http_auth_sspi_win.cc | |
parent | 5526773cbfbb6b9f3ef4fbec96bebc5014cf78ff (diff) | |
download | chromium_src-65d3438acf8e8e4f525c23b00c46b7a1330b00ee.zip chromium_src-65d3438acf8e8e4f525c23b00c46b7a1330b00ee.tar.gz chromium_src-65d3438acf8e8e4f525c23b00c46b7a1330b00ee.tar.bz2 |
Make the Negotiate Authentication Handler a state machine.
Now that the HttpNetworkTransaction correctly handles asynchronous auth token
generation, HttpAuthHandlerNegotiate can be turned into a state machine. This
also removes the need for the externally exposed "Resolve Canonical Name"
details to users of this handler.
BUG=42222
TEST=net_unittests
Review URL: http://codereview.chromium.org/2867022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51387 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_auth_sspi_win.cc')
-rw-r--r-- | net/http/http_auth_sspi_win.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/net/http/http_auth_sspi_win.cc b/net/http/http_auth_sspi_win.cc index 381d7ab..221acf1 100644 --- a/net/http/http_auth_sspi_win.cc +++ b/net/http/http_auth_sspi_win.cc @@ -41,12 +41,12 @@ int MapAcquireCredentialsStatusToError(SECURITY_STATUS status, } } -int AcquireCredentials(SSPILibrary* library, - const SEC_WCHAR* package, - const std::wstring& domain, - const std::wstring& user, - const std::wstring& password, - CredHandle* cred) { +int AcquireExplicitCredentials(SSPILibrary* library, + const SEC_WCHAR* package, + const std::wstring& domain, + const std::wstring& user, + const std::wstring& password, + CredHandle* cred) { SEC_WINNT_AUTH_IDENTITY identity; identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE; identity.User = @@ -162,7 +162,6 @@ bool HttpAuthSSPI::ParseChallenge(HttpAuth::ChallengeTokenizer* tok) { int HttpAuthSSPI::GenerateAuthToken(const std::wstring* username, const std::wstring* password, const std::wstring& spn, - const HttpRequestInfo* request, std::string* auth_token) { DCHECK((username == NULL) == (password == NULL)); @@ -173,6 +172,7 @@ int HttpAuthSSPI::GenerateAuthToken(const std::wstring* username, return rv; } + DCHECK(SecIsValidHandle(&cred_)); void* out_buf; int out_buf_len; int rv = GetNextSecurityToken( @@ -202,13 +202,14 @@ int HttpAuthSSPI::GenerateAuthToken(const std::wstring* username, int HttpAuthSSPI::OnFirstRound(const std::wstring* username, const std::wstring* password) { DCHECK((username == NULL) == (password == NULL)); + DCHECK(!SecIsValidHandle(&cred_)); int rv = OK; if (username) { std::wstring domain; std::wstring user; SplitDomainAndUser(*username, &domain, &user); - rv = AcquireCredentials(library_, security_package_, domain, - user, *password, &cred_); + rv = AcquireExplicitCredentials(library_, security_package_, domain, + user, *password, &cred_); if (rv != OK) return rv; } else { |