29 lines
1.0 KiB
C#
29 lines
1.0 KiB
C#
using ZB.MOM.WW.Telemetry.Serilog;
|
|
|
|
namespace ZB.MOM.WW.MxGateway.Server.Diagnostics;
|
|
|
|
/// <summary>
|
|
/// Adapts the static <see cref="GatewayLogRedactor"/> to the shared <see cref="ILogRedactor"/> seam
|
|
/// so the telemetry RedactionEnricher masks API-key/credential material on every log event.
|
|
/// </summary>
|
|
public sealed class GatewayLogRedactorSeam : ILogRedactor
|
|
{
|
|
private static readonly string[] IdentityKeys = ["ClientIdentity", "authorization", "Authorization"];
|
|
|
|
/// <summary>
|
|
/// Masks API-key/credential material in known identity-bearing log properties.
|
|
/// </summary>
|
|
/// <param name="properties">The log event property dictionary to redact in place.</param>
|
|
public void Redact(IDictionary<string, object?> properties)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(properties);
|
|
foreach (var key in IdentityKeys)
|
|
{
|
|
if (properties.TryGetValue(key, out var value) && value is string s)
|
|
{
|
|
properties[key] = GatewayLogRedactor.RedactClientIdentity(s);
|
|
}
|
|
}
|
|
}
|
|
}
|