当 ShowPii 设置为 true 时,IdentityModel 会记录哪些信息?

What information is logged by IdentityModel when ShowPii is set to true?

IdentityModelEventSource 有一个名为 ShowPII 的 属性,这意味着个人身份信息将被添加到日志中(与安全性相关)。该值用于决定何时记录一些 OAuth2 敏感数据。

我想了解将记录哪种个人身份信息:

我知道它无法访问用户名和密码,因为它们只与 IDP 直接交换。

但是我需要知道是否需要找到一种方法来锁定我的日志文件,因为它会包含构成安全漏洞的数据。

查看 the source,似乎当 ShowPII 开启时 - 它会做两件事:

  1. Replace all parameters 传递给特定于库的异常及其数据类型名称
  2. 对于所有系统异常-replace inner message异常类型名称

在此上下文中,“特定于库”是一个例外 is of type Exception and its full type name starts with "Microsoft.IdentityModel."(库定义了一些)

根据您的用例,您会看到可以使用自定义异常记录的各种参数。 A quick search for FormatInvariant 产生了很多供您考虑。

同样,根据您的使用方式,您可能会通过查看特定命名空间上的相关 LogMessages.cs 文件来更好地了解错误消息的内容。


P.S.: 在旁注中,似乎默认 ShowPII 设置 is GDPR-compliant

这是 IdentityModel 的可能日志消息:LogMessages.cs

关于

I am trying to understand what kind of Personally Identifiable Information will be logged

我不会从那里复制粘贴日志消息(特别是,因为它们随时可能更改)。您可以自己检查它们并决定什么应该被视为 PII。

但这里有一个有趣的例子:

"IDX10615: Encryption failed. No support for: Algorithm: '{0}', SecurityKey: '{1}'."

this的用法是:

throw LogHelper.LogExceptionMessage(new SecurityTokenEncryptionFailedException(LogHelper.FormatInvariant(TokenLogMessages.IDX10615, encryptingCredentials.Enc, encryptingCredentials.Key)));

如果您继续跟踪,您会发现如果 ShowPII = trueencryptingCredentials.Key 将被记录,而如果 ShowPII = false.

则不会被记录

当然,根据您的用例,此特定消息可能永远不会出现在您的日志中。并不是所有的信息都泄露得如此离谱。但你永远不知道:

  1. 您的用例可能会改变
  2. 您可能误解了 IdentityModel 可以为您的用例发出的消息集
  3. IdentityModel 代码可能会更改,您可能会忘记检查消息集是否仍然安全

大约

if I need to find a way to lock down my log files

是的,你绝对需要。

或者更好 - 不要在生产环境中使用 ShowPII = true 进行监控,仅在开发环境中使用它进行调试。