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

Side by Side Diff: chrome/browser/chromeos/login/login_utils.cc

Issue 7584026: Encrypted OAuth1 all access token and secret with system salt for now, will replace this with use... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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 | Annotate | Revision Log
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 #include "chrome/browser/chromeos/login/login_utils.h" 5 #include "chrome/browser/chromeos/login/login_utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 // Given the authenticated credentials from the cookie jar, try to exchange 277 // Given the authenticated credentials from the cookie jar, try to exchange
278 // fetch OAuth request, v1 and v2 tokens. 278 // fetch OAuth request, v1 and v2 tokens.
279 void FetchOAuth1AccessToken(Profile* auth_profile); 279 void FetchOAuth1AccessToken(Profile* auth_profile);
280 280
281 // Given the credentials try to exchange them for 281 // Given the credentials try to exchange them for
282 // full-fledged Google authentication cookies. 282 // full-fledged Google authentication cookies.
283 virtual void FetchCookies( 283 virtual void FetchCookies(
284 Profile* profile, 284 Profile* profile,
285 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE; 285 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE;
286 286
287 // Starts process of fetching OAuth2 tokens (based on OAuth1 tokens found
288 // in |user_profile|) and kicks off internal services that depend on them.
289 virtual void StartTokenServices(Profile* user_profile) OVERRIDE;
290
287 // Supply credentials for sync and others to use. 291 // Supply credentials for sync and others to use.
288 virtual void StartSync( 292 virtual void StartSync(
289 Profile* profile, 293 Profile* profile,
290 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE; 294 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE;
291 295
292 // Sets the current background view. 296 // Sets the current background view.
293 virtual void SetBackgroundView( 297 virtual void SetBackgroundView(
294 chromeos::BackgroundView* background_view) OVERRIDE; 298 chromeos::BackgroundView* background_view) OVERRIDE;
295 299
296 // Gets the current background view. 300 // Gets the current background view.
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 const GaiaAuthConsumer::ClientLoginResult& credentials) { 585 const GaiaAuthConsumer::ClientLoginResult& credentials) {
582 // Take the credentials passed in and try to exchange them for 586 // Take the credentials passed in and try to exchange them for
583 // full-fledged Google authentication cookies. This is 587 // full-fledged Google authentication cookies. This is
584 // best-effort; it's possible that we'll fail due to network 588 // best-effort; it's possible that we'll fail due to network
585 // troubles or some such. 589 // troubles or some such.
586 // CookieFetcher will delete itself once done. 590 // CookieFetcher will delete itself once done.
587 CookieFetcher* cf = new CookieFetcher(profile); 591 CookieFetcher* cf = new CookieFetcher(profile);
588 cf->AttemptFetch(credentials.data); 592 cf->AttemptFetch(credentials.data);
589 } 593 }
590 594
595 void LoginUtilsImpl::StartTokenServices(Profile* user_profile) {
596 std::string oauth1_token;
597 std::string oauth1_secret;
598 if (!ReadOAuth1AccessToken(user_profile, &oauth1_token, &oauth1_secret))
599 return;
600
601 FetchSecondaryTokens(user_profile->GetOffTheRecordProfile(), oauth1_token,
602 oauth1_secret);
603 }
604
591 void LoginUtilsImpl::StartSync( 605 void LoginUtilsImpl::StartSync(
592 Profile* user_profile, 606 Profile* user_profile,
593 const GaiaAuthConsumer::ClientLoginResult& credentials) { 607 const GaiaAuthConsumer::ClientLoginResult& credentials) {
594 TokenService* token_service = user_profile->GetTokenService(); 608 TokenService* token_service = user_profile->GetTokenService();
595 static bool initialized = false; 609 static bool initialized = false;
596 if (!initialized) { 610 if (!initialized) {
597 initialized = true; 611 initialized = true;
598 612
599 // Set the CrOS user by getting this constructor run with the 613 // Set the CrOS user by getting this constructor run with the
600 // user's email on first retrieval. 614 // user's email on first retrieval.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 877
864 void LoginUtilsImpl::FetchSecondaryTokens(Profile* offrecord_profile, 878 void LoginUtilsImpl::FetchSecondaryTokens(Profile* offrecord_profile,
865 const std::string& token, 879 const std::string& token,
866 const std::string& secret) { 880 const std::string& secret) {
867 FetchPolicyToken(offrecord_profile, token, secret); 881 FetchPolicyToken(offrecord_profile, token, secret);
868 // TODO(rickcam, zelidrag): Wire TokenService there when it becomes 882 // TODO(rickcam, zelidrag): Wire TokenService there when it becomes
869 // capable of handling OAuth1 tokens directly. 883 // capable of handling OAuth1 tokens directly.
870 } 884 }
871 885
872 bool LoginUtilsImpl::ReadOAuth1AccessToken(Profile* user_profile, 886 bool LoginUtilsImpl::ReadOAuth1AccessToken(Profile* user_profile,
873 std::string* token, 887 std::string* token,
874 std::string* secret) { 888 std::string* secret) {
875 PrefService* pref_service = user_profile->GetPrefs(); 889 PrefService* pref_service = user_profile->GetPrefs();
876 *token = pref_service->GetString(prefs::kOAuth1Token); 890 std::string encoded_token = pref_service->GetString(prefs::kOAuth1Token);
877 *secret = pref_service->GetString(prefs::kOAuth1Secret); 891 std::string encoded_secret = pref_service->GetString(prefs::kOAuth1Secret);
878 if (!token->length() || !secret->length()) 892 if (!encoded_token.length() || !encoded_secret.length())
879 return false; 893 return false;
880 894
895 std::string decoded_token = authenticator_->DecryptToken(encoded_token);
896 std::string decoded_secret = authenticator_->DecryptToken(encoded_secret);
897 if (!decoded_token.length() || !decoded_secret.length())
898 return false;
899
900 *token = decoded_token;
901 *secret = decoded_secret;
881 return true; 902 return true;
882 } 903 }
883 904
884 void LoginUtilsImpl::StoreOAuth1AccessToken(Profile* user_profile, 905 void LoginUtilsImpl::StoreOAuth1AccessToken(Profile* user_profile,
885 const std::string& token, 906 const std::string& token,
886 const std::string& secret) { 907 const std::string& secret) {
887 // First store OAuth1 token + service for the current user profile... 908 // First store OAuth1 token + service for the current user profile...
888 PrefService* pref_service = user_profile->GetPrefs(); 909 PrefService* pref_service = user_profile->GetPrefs();
889 pref_service->SetString(prefs::kOAuth1Token, token); 910 pref_service->SetString(prefs::kOAuth1Token,
890 pref_service->SetString(prefs::kOAuth1Secret, secret); 911 authenticator_->EncryptToken(token));
912 pref_service->SetString(prefs::kOAuth1Secret,
913 authenticator_->EncryptToken(secret));
891 914
892 // ...then record the presence of valid OAuth token for this account in local 915 // ...then record the presence of valid OAuth token for this account in local
893 // state as well. 916 // state as well.
894 UserManager::Get()->SaveUserOAuthStatus(username_, 917 UserManager::Get()->SaveUserOAuthStatus(username_,
895 UserManager::OAUTH_TOKEN_STATUS_VALID); 918 UserManager::OAUTH_TOKEN_STATUS_VALID);
896 } 919 }
897 920
898 void LoginUtilsImpl::FetchCredentials(Profile* user_profile, 921 void LoginUtilsImpl::FetchCredentials(Profile* user_profile,
899 const std::string& token, 922 const std::string& token,
900 const std::string& secret) { 923 const std::string& secret) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 // Mark login host for deletion after browser starts. This 978 // Mark login host for deletion after browser starts. This
956 // guarantees that the message loop will be referenced by the 979 // guarantees that the message loop will be referenced by the
957 // browser before it is dereferenced by the login host. 980 // browser before it is dereferenced by the login host.
958 if (login_host) { 981 if (login_host) {
959 login_host->OnSessionStart(); 982 login_host->OnSessionStart();
960 login_host = NULL; 983 login_host = NULL;
961 } 984 }
962 } 985 }
963 986
964 } // namespace chromeos 987 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/login_utils.h ('k') | chrome/browser/chromeos/login/mock_authenticator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698