Commit a1190f81 authored by Bailey Berro's avatar Bailey Berro Committed by Commit Bot

Add metrics for smb share authentication method

- Adds a histrogram and metric collection for the authenticaion method
that a user uses.

Bug: chromium:891902
Change-Id: I6f3a9e81ec3983750d006c93fa79b147c83fc98b
Reviewed-on: https://chromium-review.googlesource.com/c/1262971
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarSteven Holte <holte@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#598689}
parent 5292ab62
...@@ -62,6 +62,19 @@ bool IsEnabledByFlag() { ...@@ -62,6 +62,19 @@ bool IsEnabledByFlag() {
} }
// Metric recording functions. // Metric recording functions.
// This enum is used to define the buckets for an enumerated UMA histogram.
// Hence,
// (a) existing enumerated constants should never be deleted or reordered, and
// (b) new constants should only be appended at the end of the enumeration.
enum class AuthMethod {
kNoCredentials = 0,
kUsernameOnly = 1,
kUsernameAndPassword = 2,
kSSOKerberos = 3,
kMaxValue = kSSOKerberos,
};
void RecordMountResult(SmbMountResult result) { void RecordMountResult(SmbMountResult result) {
DCHECK_LE(result, SmbMountResult::kMaxValue); DCHECK_LE(result, SmbMountResult::kMaxValue);
UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.MountResult", result); UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.MountResult", result);
...@@ -72,6 +85,11 @@ void RecordRemountResult(SmbMountResult result) { ...@@ -72,6 +85,11 @@ void RecordRemountResult(SmbMountResult result) {
UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.RemountResult", result); UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.RemountResult", result);
} }
void RecordAuthenticationMethod(AuthMethod method) {
DCHECK_LE(method, AuthMethod::kMaxValue);
UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.AuthenticationMethod", method);
}
std::unique_ptr<TempFileManager> CreateTempFileManager() { std::unique_ptr<TempFileManager> CreateTempFileManager() {
return std::make_unique<TempFileManager>(); return std::make_unique<TempFileManager>();
} }
...@@ -134,6 +152,7 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options, ...@@ -134,6 +152,7 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options,
std::string workgroup; std::string workgroup;
if (use_chromad_kerberos) { if (use_chromad_kerberos) {
RecordAuthenticationMethod(AuthMethod::kSSOKerberos);
// Get the user's username and workgroup from their email address to be used // Get the user's username and workgroup from their email address to be used
// for Kerberos authentication. // for Kerberos authentication.
user_manager::User* user = user_manager::User* user =
...@@ -143,6 +162,15 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options, ...@@ -143,6 +162,15 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options,
ParseUserPrincipalName(user->GetDisplayEmail(), &username, &workgroup); ParseUserPrincipalName(user->GetDisplayEmail(), &username, &workgroup);
} }
} else { } else {
// Record authentication method metrics.
if (!username_input.empty() && !password_input.empty()) {
RecordAuthenticationMethod(AuthMethod::kUsernameAndPassword);
} else if (!username_input.empty()) {
RecordAuthenticationMethod(AuthMethod::kUsernameOnly);
} else {
RecordAuthenticationMethod(AuthMethod::kNoCredentials);
}
// Use provided credentials and parse the username into username and // Use provided credentials and parse the username into username and
// workgroup if necessary. // workgroup if necessary.
username = username_input; username = username_input;
......
...@@ -33694,6 +33694,13 @@ Called by update_use_counter_css.py.--> ...@@ -33694,6 +33694,13 @@ Called by update_use_counter_css.py.-->
<int value="10" label="FAILED_TO_FIND_NAMESPACE"/> <int value="10" label="FAILED_TO_FIND_NAMESPACE"/>
</enum> </enum>
<enum name="NativeSmbFileShare_AuthMethod">
<int value="0" label="No Credentials."/>
<int value="1" label="Username only."/>
<int value="2" label="Username and password."/>
<int value="3" label="SSO kerberos."/>
</enum>
<enum name="NativeSmbFileShare_MountResult"> <enum name="NativeSmbFileShare_MountResult">
<int value="0" label="Succeeded"/> <int value="0" label="Succeeded"/>
<int value="1" label="Unknown failure"/> <int value="1" label="Unknown failure"/>
...@@ -50158,6 +50158,15 @@ uploading your change for review. ...@@ -50158,6 +50158,15 @@ uploading your change for review.
</summary> </summary>
</histogram> </histogram>
<histogram name="NativeSmbFileShare.AuthenticationMethod"
enum="NativeSmbFileShare_AuthMethod">
<owner>zentaro@chromium.org</owner>
<summary>
The method used to authenticate to a share. This is called on each attempted
mount.
</summary>
</histogram>
<histogram name="NativeSmbFileShare.MountCount"> <histogram name="NativeSmbFileShare.MountCount">
<owner>zentaro@chromium.org</owner> <owner>zentaro@chromium.org</owner>
<summary> <summary>
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