@@ -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