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

Unified Diff: google_apis/gaia/gaia_auth_fetcher.cc

Issue 2872253002: Network traffic annotation added to gaia_auth_fetcher. (Closed)
Patch Set: Comments addressed. Created 3 years, 7 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 | « google_apis/gaia/gaia_auth_fetcher.h ('k') | google_apis/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gaia/gaia_auth_fetcher.cc
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
index dcc6eb4e2aefe6c59eff45c4d6791dfe39476ccd..814fc0099ed578e478468df6ffe73cd6cc6c3cf8 100644
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -219,14 +219,16 @@ void GaiaAuthFetcher::CancelRequest() {
fetch_pending_ = false;
}
-void GaiaAuthFetcher::CreateAndStartGaiaFetcher(const std::string& body,
- const std::string& headers,
- const GURL& gaia_gurl,
- int load_flags) {
+void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
+ const std::string& body,
+ const std::string& headers,
+ const GURL& gaia_gurl,
+ int load_flags,
+ const net::NetworkTrafficAnnotationTag& traffic_annotation) {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
fetcher_ = net::URLFetcher::Create(
0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST,
- this);
+ this, traffic_annotation);
fetcher_->SetRequestContext(getter_);
fetcher_->SetUploadData("application/x-www-form-urlencoded", body);
gaia::MarkURLFetcherAsGaia(fetcher_.get());
@@ -511,25 +513,37 @@ bool GaiaAuthFetcher::ParseListIdpSessionsResponse(const std::string& data,
return true;
}
-void GaiaAuthFetcher::StartIssueAuthToken(const std::string& sid,
- const std::string& lsid,
- const char* const service) {
- DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
-
- VLOG(1) << "Starting IssueAuthToken for: " << service;
- requested_service_ = service;
- request_body_ = MakeIssueAuthTokenBody(sid, lsid, service);
- CreateAndStartGaiaFetcher(request_body_, std::string(),
- issue_auth_token_gurl_, kLoadFlagsIgnoreCookies);
-}
void GaiaAuthFetcher::StartRevokeOAuth2Token(const std::string& auth_token) {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
VLOG(1) << "Starting OAuth2 token revocation";
request_body_ = MakeRevokeTokenBody(auth_token);
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_revoke_token", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description: "This request revokes an OAuth 2.0 refresh token."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered whenever "
+ "an OAuth 2.0 refresh token needs to be revoked."
+ data: "The OAuth 2.0 refresh token that should be revoked."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: false
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
msramek 2017/05/26 12:24:52 nit: Not a native speaker, but should this be "the
Ramin Halavati 2017/05/29 08:00:49 Done.
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(request_body_, std::string(), oauth2_revoke_gurl_,
- kLoadFlagsIgnoreCookies);
+ kLoadFlagsIgnoreCookies, traffic_annotation);
}
void GaiaAuthFetcher::StartCookieForOAuthLoginTokenExchange(
@@ -575,9 +589,38 @@ void GaiaAuthFetcher::StartCookieForOAuthLoginTokenExchange(
}
fetch_token_from_auth_code_ = fetch_token_from_auth_code;
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_exchange_cookies", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request exchanges the cookies of a Google signed-in user "
+ "session for an OAuth 2.0 refresh token."
+ trigger:
+ "This request is part of Gaia Auth API, and may be triggered at "
+ "the end of the Chrome sign-in flow."
+ data:
+ "The Google console client ID of the Chrome application, the ID of "
+ "the device, and the index of the session in the Google "
+ "authentication cookies."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(std::string(), device_id_header,
client_login_to_oauth2_gurl_.Resolve(query_string),
- net::LOAD_NORMAL);
+ net::LOAD_NORMAL, traffic_annotation);
}
void GaiaAuthFetcher::StartAuthCodeForOAuth2TokenExchange(
@@ -592,8 +635,36 @@ void GaiaAuthFetcher::StartAuthCodeForOAuth2TokenExchangeWithDeviceId(
VLOG(1) << "Starting OAuth token pair fetch";
request_body_ = MakeGetTokenPairBody(auth_code, device_id);
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_exchange_device_id", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request exchanges an authorization code for an OAuth 2.0 "
+ "refresh token."
+ trigger:
+ "This request is part of Gaia Auth API, and may be triggered at "
+ "the end of the Chrome sign-in flow."
+ data:
+ "The Google console client ID and client secret of the Chrome "
+ "application, the OAuth 2.0 authorization code, and the ID of the "
+ "device."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: false
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(request_body_, std::string(), oauth2_token_gurl_,
- kLoadFlagsIgnoreCookies);
+ kLoadFlagsIgnoreCookies, traffic_annotation);
}
void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid) {
@@ -601,8 +672,31 @@ void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid) {
VLOG(1) << "Starting GetUserInfo for lsid=" << lsid;
request_body_ = MakeGetUserInfoBody(lsid);
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_get_user_info", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request fetches user information of a Google account."
+ trigger:
+ "This fetcher is only used after signing in with a child account."
+ data: "The value of the Google authentication LSID cookie."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: false
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(request_body_, std::string(), get_user_info_gurl_,
- kLoadFlagsIgnoreCookies);
+ kLoadFlagsIgnoreCookies, traffic_annotation);
}
void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token,
@@ -622,9 +716,37 @@ void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token,
std::string continue_url("http://www.google.com");
std::string query = MakeMergeSessionQuery(uber_token, external_cc_result,
continue_url, source_);
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_merge_sessions", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request adds an account to the Google authentication cookies."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered whenever "
+ "a new Google account is added to the browser."
+ data:
+ "This request includes the user-auth token and sometimes a string "
+ "containing the result of connection checks for various Google web "
+ "properties."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(std::string(), std::string(),
merge_session_gurl_.Resolve(query),
- net::LOAD_NORMAL);
+ net::LOAD_NORMAL, traffic_annotation);
}
void GaiaAuthFetcher::StartTokenFetchForUberAuthExchange(
@@ -638,8 +760,36 @@ void GaiaAuthFetcher::StartTokenFetchForUberAuthExchange(
base::StringPrintf(kOAuthHeaderFormat, access_token.c_str());
int load_flags =
is_bound_to_channel_id ? net::LOAD_NORMAL : kLoadFlagsIgnoreCookies;
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_fetch_for_uber", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request exchanges an Oauth2 access token for an uber-auth "
+ "token. This token may be used to add an account to the Google "
+ "authentication cookies."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered whenever "
+ "a new Google account is added to the browser."
+ data: "This request contains an OAuth 2.0 access token. "
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(std::string(), authentication_header,
- uberauth_token_gurl_, load_flags);
+ uberauth_token_gurl_, load_flags,
+ traffic_annotation);
}
void GaiaAuthFetcher::StartOAuthLogin(const std::string& access_token,
@@ -649,53 +799,144 @@ void GaiaAuthFetcher::StartOAuthLogin(const std::string& access_token,
request_body_ = MakeOAuthLoginBody(service, source_);
std::string authentication_header =
base::StringPrintf(kOAuth2BearerHeaderFormat, access_token.c_str());
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_login", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request exchanges an OAuthLogin-scoped oauth2 access token "
+ "for a ClientLogin-style service tokens. The response to this "
msramek 2017/05/26 12:24:52 What is ClientLogin? Does this refer to the Client
msarda 2017/05/29 11:34:13 This is not part of an OAuth 2.0 process - it exch
msramek 2017/05/29 13:39:31 Ah, I guess I misunderstood originally. If we're s
Ramin Halavati 2017/05/29 13:52:51 Acknowledged.
+ "request is the same as the response to a ClientLogin request, "
+ "except that captcha challenges are never issued."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered after "
+ "signing in with a child account."
+ data:
+ "This request contains an OAuth 2.0 access token and the service "
+ "for which a ClientLogin-style should be delivered."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(request_body_, authentication_header,
- oauth_login_gurl_, net::LOAD_NORMAL);
+ oauth_login_gurl_, net::LOAD_NORMAL,
+ traffic_annotation);
}
void GaiaAuthFetcher::StartListAccounts() {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_list_accounts", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request is used to list the accounts in the Google "
+ "authentication cookies."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered whenever "
+ "the list of all available accounts in the Google authentication "
+ "cookies is required."
+ data: "None."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(" ", // To force an HTTP POST.
"Origin: https://www.google.com",
- list_accounts_gurl_, net::LOAD_NORMAL);
+ list_accounts_gurl_, net::LOAD_NORMAL,
+ traffic_annotation);
}
void GaiaAuthFetcher::StartLogOut() {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_log_out", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request is part of the Chrome - Google authentication API "
+ "and allows its callers to sign out all Google accounts from the "
+ "content area."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered whenever "
+ "signing out of all Google accounts is required."
+ data: "None."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: true
+ cookies_store: "user"
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(std::string(), logout_headers_, logout_gurl_,
- net::LOAD_NORMAL);
+ net::LOAD_NORMAL, traffic_annotation);
}
void GaiaAuthFetcher::StartGetCheckConnectionInfo() {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("gaia_auth_check_connection_info", R"(
+ semantics {
+ sender: "Chrome - Google authentication API"
+ description:
+ "This request is used to fetch from the Google authentication "
+ "server the the list of URLs to check its connection info."
+ trigger:
+ "This request is part of Gaia Auth API, and is triggered once "
+ "after a Google account is added to the browser."
+ data: "None."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: false
+ setting:
+ "This feature cannot be disabled in settings, but if user signs "
+ "out of Chrome, this request would not be made."
+ chrome_policy {
+ SigninAllowed {
+ policy_options {mode: MANDATORY}
+ SigninAllowed: false
+ }
+ }
+ })");
CreateAndStartGaiaFetcher(std::string(), std::string(),
get_check_connection_info_url_,
- kLoadFlagsIgnoreCookies);
-}
-
-void GaiaAuthFetcher::StartListIDPSessions(const std::string& scopes,
- const std::string& domain) {
- DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
-
- request_body_ = MakeListIDPSessionsBody(scopes, domain);
- requested_service_ = kListIdpServiceRequested;
- CreateAndStartGaiaFetcher(request_body_, std::string(), oauth2_iframe_url_,
- net::LOAD_NORMAL);
+ kLoadFlagsIgnoreCookies, traffic_annotation);
}
-void GaiaAuthFetcher::StartGetTokenResponse(const std::string& scopes,
- const std::string& domain,
- const std::string& login_hint) {
- DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
-
- request_body_ = MakeGetTokenResponseBody(scopes, domain, login_hint);
- requested_service_ = kGetTokenResponseRequested;
- CreateAndStartGaiaFetcher(request_body_, std::string(), oauth2_iframe_url_,
- net::LOAD_NORMAL);
-}
// static
GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError(
« no previous file with comments | « google_apis/gaia/gaia_auth_fetcher.h ('k') | google_apis/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698