Skip to content

Commit 5990627

Browse files
masked senstive config data
1 parent 926de1e commit 5990627

1 file changed

Lines changed: 34 additions & 2 deletions

File tree

HydrantCAProxy/HydrantIdCAPlugin.cs

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void Initialize(IAnyCAPluginConfigProvider configProvider, ICertificateDa
5252
certDataReader = certificateDataReader;
5353
Config = configProvider;
5454
var rawData = JsonConvert.SerializeObject(configProvider.CAConnectionData);
55-
_logger.LogTrace("Initialize: raw config JSON: {Json}", rawData);
55+
_logger.LogTrace("Initialize: config JSON (sensitive keys masked): {Json}", MaskConfigForLog(rawData));
5656
_config = JsonConvert.DeserializeObject<HydrantIdCAPluginConfig.Config>(rawData);
5757
});
5858

@@ -78,6 +78,38 @@ public void Initialize(IAnyCAPluginConfigProvider configProvider, ICertificateDa
7878
}
7979
}
8080

81+
private static readonly HashSet<string> _sensitiveConfigKeys = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
82+
{
83+
HydrantIdCAPluginConfig.ConfigConstants.HydrantIdAuthId,
84+
HydrantIdCAPluginConfig.ConfigConstants.HydrantIdAuthKey
85+
};
86+
87+
private static string MaskConfigForLog(string rawJson)
88+
{
89+
if (string.IsNullOrEmpty(rawJson)) return rawJson;
90+
try
91+
{
92+
var token = Newtonsoft.Json.Linq.JToken.Parse(rawJson);
93+
if (token is Newtonsoft.Json.Linq.JObject obj)
94+
{
95+
foreach (var prop in obj.Properties())
96+
{
97+
if (_sensitiveConfigKeys.Contains(prop.Name) &&
98+
prop.Value.Type != Newtonsoft.Json.Linq.JTokenType.Null)
99+
{
100+
prop.Value = "***REDACTED***";
101+
}
102+
}
103+
return obj.ToString(Newtonsoft.Json.Formatting.None);
104+
}
105+
return token.ToString(Newtonsoft.Json.Formatting.None);
106+
}
107+
catch
108+
{
109+
return "***REDACTED***";
110+
}
111+
}
112+
81113
private static List<string> CheckRequiredValues(Dictionary<string, object> connectionInfo, params string[] args)
82114
{
83115
List<string> errors = new List<string>();
@@ -135,7 +167,7 @@ public Task ValidateCAConnectionInfo(Dictionary<string, object> connectionInfo)
135167

136168
_logger.LogDebug("Validating HydrantId CA Connection properties");
137169
var rawData = JsonConvert.SerializeObject(connectionInfo);
138-
_logger.LogTrace("ValidateCAConnectionInfo: raw connectionInfo JSON: {Json}", rawData);
170+
_logger.LogTrace("ValidateCAConnectionInfo: connectionInfo JSON (sensitive keys masked): {Json}", MaskConfigForLog(rawData));
139171

140172
_config = JsonConvert.DeserializeObject<HydrantIdCAPluginConfig.Config>(rawData);
141173

0 commit comments

Comments
 (0)