Commit 7aa9321d authored by Anastasiia Nikolaienko's avatar Anastasiia Nikolaienko Committed by Commit Bot

Send device id for secondary accounts on Chrome OS

Attach a device id for Secondary Account sign-ins on Chrome OS.

Bug: 1012723
Change-Id: Ic7d8fc22bd82c62354d66d4f49e6070bc65e4ae1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1859784Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarKush Sinha <sinhak@chromium.org>
Commit-Queue: Anastasiia Nikolaienko <anastasiian@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710004}
parent c5c61416
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <string> #include <string>
#include "base/base64.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/sequenced_task_runner_handle.h"
...@@ -13,18 +14,30 @@ ...@@ -13,18 +14,30 @@
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/browser_process_platform_part.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/chrome_device_id_helper.h"
#include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/webui/signin/inline_login_handler.h" #include "chrome/browser/ui/webui/signin/inline_login_handler.h"
#include "chromeos/components/account_manager/account_manager.h" #include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h" #include "chromeos/components/account_manager/account_manager_factory.h"
#include "components/signin/public/identity_manager/account_info.h" #include "components/signin/public/identity_manager/account_info.h"
#include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/identity_manager.h"
#include "crypto/sha2.h"
#include "google_apis/gaia/gaia_urls.h" #include "google_apis/gaia/gaia_urls.h"
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
namespace chromeos { namespace chromeos {
namespace { namespace {
// Returns a base64-encoded hash code of "signin_scoped_device_id:gaia_id".
std::string GetAccountDeviceId(const std::string& signin_scoped_device_id,
const std::string& gaia_id) {
std::string account_device_id;
base::Base64Encode(
crypto::SHA256HashString(signin_scoped_device_id + ":" + gaia_id),
&account_device_id);
return account_device_id;
}
// A helper class for completing the inline login flow. Primarily, it is // A helper class for completing the inline login flow. Primarily, it is
// responsible for exchanging the auth code, obtained after a successful user // responsible for exchanging the auth code, obtained after a successful user
// sign in, for OAuth tokens and subsequently populating Chrome OS // sign in, for OAuth tokens and subsequently populating Chrome OS
...@@ -39,7 +52,8 @@ class SigninHelper : public GaiaAuthConsumer { ...@@ -39,7 +52,8 @@ class SigninHelper : public GaiaAuthConsumer {
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& gaia_id, const std::string& gaia_id,
const std::string& email, const std::string& email,
const std::string& auth_code) const std::string& auth_code,
const std::string& signin_scoped_device_id)
: account_manager_(account_manager), : account_manager_(account_manager),
close_dialog_closure_(close_dialog_closure), close_dialog_closure_(close_dialog_closure),
email_(email), email_(email),
...@@ -49,7 +63,9 @@ class SigninHelper : public GaiaAuthConsumer { ...@@ -49,7 +63,9 @@ class SigninHelper : public GaiaAuthConsumer {
account_key_ = chromeos::AccountManager::AccountKey{ account_key_ = chromeos::AccountManager::AccountKey{
gaia_id, chromeos::account_manager::AccountType::ACCOUNT_TYPE_GAIA}; gaia_id, chromeos::account_manager::AccountType::ACCOUNT_TYPE_GAIA};
gaia_auth_fetcher_.StartAuthCodeForOAuth2TokenExchange(auth_code); DCHECK(!signin_scoped_device_id.empty());
gaia_auth_fetcher_.StartAuthCodeForOAuth2TokenExchangeWithDeviceId(
auth_code, signin_scoped_device_id);
} }
~SigninHelper() override = default; ~SigninHelper() override = default;
...@@ -163,9 +179,10 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const std::string& email, ...@@ -163,9 +179,10 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const std::string& email,
->GetAccountManager(profile->GetPath().value()); ->GetAccountManager(profile->GetPath().value());
// SigninHelper deletes itself after its work is done. // SigninHelper deletes itself after its work is done.
new SigninHelper(account_manager, close_dialog_closure_, new SigninHelper(
account_manager->GetUrlLoaderFactory(), gaia_id, email, account_manager, close_dialog_closure_,
auth_code); account_manager->GetUrlLoaderFactory(), gaia_id, email, auth_code,
GetAccountDeviceId(GetSigninScopedDeviceIdForProfile(profile), gaia_id));
} }
void InlineLoginHandlerChromeOS::HandleDialogClose( void InlineLoginHandlerChromeOS::HandleDialogClose(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment