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() {
}
// 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) {
DCHECK_LE(result, SmbMountResult::kMaxValue);
UMA_HISTOGRAM_ENUMERATION("NativeSmbFileShare.MountResult", result);
......@@ -72,6 +85,11 @@ void RecordRemountResult(SmbMountResult 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() {
return std::make_unique<TempFileManager>();
}
......@@ -134,6 +152,7 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options,
std::string workgroup;
if (use_chromad_kerberos) {
RecordAuthenticationMethod(AuthMethod::kSSOKerberos);
// Get the user's username and workgroup from their email address to be used
// for Kerberos authentication.
user_manager::User* user =
......@@ -143,6 +162,15 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options,
ParseUserPrincipalName(user->GetDisplayEmail(), &username, &workgroup);
}
} 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
// workgroup if necessary.
username = username_input;
......
......@@ -33694,6 +33694,13 @@ Called by update_use_counter_css.py.-->
<int value="10" label="FAILED_TO_FIND_NAMESPACE"/>
</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">
<int value="0" label="Succeeded"/>
<int value="1" label="Unknown failure"/>
......@@ -50158,6 +50158,15 @@ uploading your change for review.
</summary>
</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">
<owner>zentaro@chromium.org</owner>
<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