| Index: chrome/common/net/gaia/gaia_authenticator.h
|
| diff --git a/chrome/common/net/gaia/gaia_authenticator.h b/chrome/common/net/gaia/gaia_authenticator.h
|
| deleted file mode 100644
|
| index fb5fbb4f77d74d689a67367308cc76edf083925a..0000000000000000000000000000000000000000
|
| --- a/chrome/common/net/gaia/gaia_authenticator.h
|
| +++ /dev/null
|
| @@ -1,273 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -//
|
| -// Use this class to authenticate users with Gaia and access cookies sent
|
| -// by the Gaia servers. This class cannot be used on its own becaue it relies
|
| -// on a subclass to provide the virtual Post and GetBackoffDelaySeconds methods.
|
| -//
|
| -// Sample usage:
|
| -// class ActualGaiaAuthenticator : public gaia::GaiaAuthenticator {
|
| -// Provides actual implementation of Post and GetBackoffDelaySeconds.
|
| -// };
|
| -// ActualGaiaAuthenticator gaia_auth("User-Agent", SERVICE_NAME, kGaiaUrl);
|
| -// if (gaia_auth.Authenticate("email", "passwd", SAVE_IN_MEMORY_ONLY,
|
| -// true)) { // Synchronous
|
| -// // Do something with: gaia_auth.auth_token(), or gaia_auth.sid(),
|
| -// // or gaia_auth.lsid()
|
| -// }
|
| -//
|
| -// Credentials can also be preserved for subsequent requests, though these are
|
| -// saved in plain-text in memory, and not very secure on client systems. The
|
| -// email address associated with the Gaia account can be read; the password is
|
| -// write-only.
|
| -
|
| -// TODO(sanjeevr): This class has been moved here from the bookmarks sync code.
|
| -// While it is a generic class that handles GAIA authentication, there are some
|
| -// artifacts of the sync code which needs to be cleaned up.
|
| -#ifndef CHROME_COMMON_NET_GAIA_GAIA_AUTHENTICATOR_H_
|
| -#define CHROME_COMMON_NET_GAIA_GAIA_AUTHENTICATOR_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/message_loop.h"
|
| -#include "googleurl/src/gurl.h"
|
| -
|
| -namespace gaia {
|
| -
|
| -// Error codes from Gaia. These will be set correctly for both Gaia V1
|
| -// (/ClientAuth) and V2 (/ClientLogin)
|
| -enum AuthenticationError {
|
| - None = 0,
|
| - BadAuthentication = 1,
|
| - NotVerified = 2,
|
| - TermsNotAgreed = 3,
|
| - Unknown = 4,
|
| - AccountDeleted = 5,
|
| - AccountDisabled = 6,
|
| - CaptchaRequired = 7,
|
| - ServiceUnavailable = 8,
|
| - // Errors generated by this class not Gaia.
|
| - CredentialsNotSet = 9,
|
| - ConnectionUnavailable = 10
|
| -};
|
| -
|
| -class GaiaAuthenticator;
|
| -
|
| -// GaiaAuthenticator can be used to pass user credentials to Gaia and obtain
|
| -// cookies set by the Gaia servers.
|
| -class GaiaAuthenticator {
|
| - FRIEND_TEST_ALL_PREFIXES(GaiaAuthenticatorTest,
|
| - TestNewlineAtEndOfAuthTokenRemoved);
|
| - public:
|
| -
|
| - // Since GaiaAuthenticator can be used for any service, or by any client, you
|
| - // must include a user-agent and a service-id when creating one. The
|
| - // user_agent is a short string used for simple log analysis. gaia_url is used
|
| - // to choose the server to authenticate with (e.g.
|
| - // http://accounts.google.com/ClientLogin).
|
| - GaiaAuthenticator(const std::string& user_agent,
|
| - const std::string& service_id,
|
| - const std::string& gaia_url);
|
| -
|
| - virtual ~GaiaAuthenticator();
|
| -
|
| - // This object should only be invoked from the AuthWatcherThread message
|
| - // loop, which is injected here.
|
| - void set_message_loop(const MessageLoop* loop) {
|
| - message_loop_ = loop;
|
| - }
|
| -
|
| - // Pass credentials to authenticate with, or use saved credentials via an
|
| - // overload. If authentication succeeds, you can retrieve the authentication
|
| - // token via the respective accessors. Returns a boolean indicating whether
|
| - // authentication succeeded or not.
|
| - bool Authenticate(const std::string& user_name, const std::string& password,
|
| - const std::string& captcha_token,
|
| - const std::string& captcha_value);
|
| -
|
| - bool Authenticate(const std::string& user_name, const std::string& password);
|
| -
|
| - // Pass the LSID to authenticate with. If the authentication succeeds, you can
|
| - // retrieve the authetication token via the respective accessors. Returns a
|
| - // boolean indicating whether authentication succeeded or not.
|
| - // Always returns a long lived token.
|
| - bool AuthenticateWithLsid(const std::string& lsid);
|
| -
|
| - // Resets all stored cookies to their default values.
|
| - void ResetCredentials();
|
| -
|
| - void SetUsernamePassword(const std::string& username,
|
| - const std::string& password);
|
| -
|
| - void SetUsername(const std::string& username);
|
| -
|
| - // Virtual for testing
|
| - virtual void RenewAuthToken(const std::string& auth_token);
|
| - void SetAuthToken(const std::string& auth_token);
|
| -
|
| - struct AuthResults {
|
| - AuthResults();
|
| - AuthResults(const AuthResults& other);
|
| - ~AuthResults();
|
| -
|
| - std::string email;
|
| - std::string password;
|
| -
|
| - // Fields that store various cookies.
|
| - std::string sid;
|
| - std::string lsid;
|
| - std::string auth_token;
|
| -
|
| - std::string primary_email;
|
| -
|
| - // Fields for items returned when authentication fails.
|
| - std::string error_msg;
|
| - enum AuthenticationError auth_error;
|
| - std::string auth_error_url;
|
| - std::string captcha_token;
|
| - std::string captcha_url;
|
| - };
|
| -
|
| - protected:
|
| -
|
| - struct AuthParams {
|
| - AuthParams();
|
| - ~AuthParams();
|
| -
|
| - GaiaAuthenticator* authenticator;
|
| - uint32 request_id;
|
| - std::string email;
|
| - std::string password;
|
| - std::string captcha_token;
|
| - std::string captcha_value;
|
| - };
|
| -
|
| - // mutex_ must be entered before calling this function.
|
| - AuthParams MakeParams(const std::string& user_name,
|
| - const std::string& password,
|
| - const std::string& captcha_token,
|
| - const std::string& captcha_value);
|
| -
|
| - // The real Authenticate implementations.
|
| - bool AuthenticateImpl(const AuthParams& params);
|
| - bool AuthenticateImpl(const AuthParams& params, AuthResults* results);
|
| -
|
| - // virtual for testing purposes.
|
| - virtual bool PerformGaiaRequest(const AuthParams& params,
|
| - AuthResults* results);
|
| - virtual bool Post(const GURL& url, const std::string& post_body,
|
| - unsigned long* response_code, std::string* response_body);
|
| -
|
| - // Caller should fill in results->LSID before calling. Result in
|
| - // results->primary_email.
|
| - virtual bool LookupEmail(AuthResults* results);
|
| -
|
| - // Subclasses must override to provide a backoff delay. It is virtual instead
|
| - // of pure virtual for testing purposes.
|
| - // TODO(sanjeevr): This should be made pure virtual. But this class is
|
| - // currently directly being used in sync/engine/authenticator.cc, which is
|
| - // wrong.
|
| - virtual int GetBackoffDelaySeconds(int current_backoff_delay);
|
| -
|
| - public:
|
| - // Retrieve email.
|
| - inline std::string email() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.email;
|
| - }
|
| -
|
| - // Retrieve password.
|
| - inline std::string password() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.password;
|
| - }
|
| -
|
| - // Retrieve AuthToken, if previously authenticated; otherwise returns "".
|
| - inline std::string auth_token() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.auth_token;
|
| - }
|
| -
|
| - // Retrieve SID cookie. For details, see the Google Accounts documentation.
|
| - inline std::string sid() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.sid;
|
| - }
|
| -
|
| - // Retrieve LSID cookie. For details, see the Google Accounts documentation.
|
| - inline std::string lsid() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.lsid;
|
| - }
|
| -
|
| - // Get last authentication error.
|
| - inline enum AuthenticationError auth_error() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.auth_error;
|
| - }
|
| -
|
| - inline std::string auth_error_url() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.auth_error_url;
|
| - }
|
| -
|
| - inline std::string captcha_token() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.captcha_token;
|
| - }
|
| -
|
| - inline std::string captcha_url() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_.captcha_url;
|
| - }
|
| -
|
| - inline AuthResults results() const {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| - return auth_results_;
|
| - }
|
| -
|
| - private:
|
| - bool IssueAuthToken(AuthResults* results, const std::string& service_id);
|
| -
|
| - // Helper method to parse response when authentication succeeds.
|
| - void ExtractTokensFrom(const std::string& response, AuthResults* results);
|
| - // Helper method to parse response when authentication fails.
|
| - void ExtractAuthErrorFrom(const std::string& response, AuthResults* results);
|
| -
|
| - // Fields for the obvious data items.
|
| - const std::string user_agent_;
|
| - const std::string service_id_;
|
| - const std::string gaia_url_;
|
| -
|
| - AuthResults auth_results_;
|
| -
|
| - // When multiple async requests are running, only the one that started most
|
| - // recently updates the values.
|
| - //
|
| - // Note that even though this code was written to handle multiple requests
|
| - // simultaneously, the sync code issues auth requests one at a time.
|
| - uint32 request_count_;
|
| -
|
| - // Used to compute backoff time for next allowed authentication.
|
| - int delay_; // In seconds.
|
| - // On Windows, time_t is 64-bit by default. Even though we have defined the
|
| - // _USE_32BIT_TIME_T preprocessor flag, other libraries including this header
|
| - // may not have that preprocessor flag defined resulting in mismatched class
|
| - // sizes. So we explicitly define it as 32-bit on Windows.
|
| - // TODO(sanjeevr): Change this to to use base::Time
|
| -#if defined(OS_WIN)
|
| - __time32_t next_allowed_auth_attempt_time_;
|
| -#else // defined(OS_WIN)
|
| - time_t next_allowed_auth_attempt_time_;
|
| -#endif // defined(OS_WIN)
|
| - int early_auth_attempt_count_;
|
| -
|
| - // The message loop all our methods are invoked on.
|
| - const MessageLoop* message_loop_;
|
| -};
|
| -
|
| -} // namespace gaia
|
| -#endif // CHROME_COMMON_NET_GAIA_GAIA_AUTHENTICATOR_H_
|
|
|