【问题标题】:What information is logged by IdentityModel when ShowPii is set to true?当 ShowPii 设置为 true 时,IdentityModel 会记录哪些信息?
【发布时间】:2020-10-30 08:29:00
【问题描述】:

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

我正在尝试了解将记录什么样的个人身份信息:

  • 客户端 ID? (又名客户端密钥、消费者密钥)
  • 客户端密码? (又名消费者秘密)
  • Json Web 令牌? (又名智威汤逊)
  • 访问令牌?
  • 刷新令牌?
  • Kerberos 票证?
  • PKCE 值?
  • 授权码?

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

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

【问题讨论】:

    标签: asp.net-core oauth-2.0 openid-connect .net-standard .net-standard-2.0


    【解决方案1】:

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

    关于

    我正在尝试了解将记录什么样的个人身份信息

    我不会从那里复制粘贴日志消息(尤其是因为它们随时可能更改)。您可以自己检查它们并决定应该将什么视为 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 = true 将记录encryptingCredentials.Key,如果ShowPII = false 将不会记录ShowPII = false

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

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

    那么

    如果我需要找到锁定日志文件的方法

    是的,你绝对需要。

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

    【讨论】:

    • 请注意,SecurityKey.ToString() 被实现为仅呈现键类型和一些 ID。 (JsonWebKey 扩展了这个,但它仍然不记录实际的关键数据。)
    【解决方案2】:

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

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

    在这种情况下,“库特定”是 is of type Exception and its full type name starts with "Microsoft.IdentityModel." 的一个例外(库定义了一些)

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

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


    P.S.:附带说明一下,默认 ShowPII 设置 is GDPR-compliant

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2018-12-06
      • 2017-06-28
      • 2014-03-03
      • 2016-09-05
      • 2011-10-03
      • 2021-06-21
      相关资源
      最近更新 更多