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

Unified Diff: chrome/common/net/gaia/gaia_authenticator.h

Issue 10928017: Moving google_apis and GaiaClient to src/google_apis. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/net/gaia/gaia_auth_util_unittest.cc ('k') | chrome/common/net/gaia/gaia_authenticator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « chrome/common/net/gaia/gaia_auth_util_unittest.cc ('k') | chrome/common/net/gaia/gaia_authenticator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698