IdentityModelEventSource
有一个名为ShowPII
的属性,这意味着个人身份信息将被添加到日志中(与安全性有关(。此值用于决定何时记录某些OAuth2敏感数据。
我正在努力了解什么样的个人身份信息将被记录:
- 客户端ID?(又名客户端密钥、消费者密钥(
- 客户秘密?(又名消费者秘密(
- Json网络代币?(又名JWT(
- 访问令牌
- 刷新令牌
- Kerberos票证
- PKCE值
- 授权代码
我知道它无法访问用户名和密码,因为它们只与IDP直接交换。
但是我需要知道我是否需要找到一种方法来锁定我的日志文件,因为它会包含构成安全漏洞的数据
这可能是IdentityModel:LogMessages.cs 的日志消息
关于
我正在努力了解将记录哪种个人身份信息
我不会从那里复制粘贴日志消息(尤其是,因为它们随时可能更改(。你可以自己检查,并决定什么应该被视为PII。
但这里有一个有趣的例子:
"IDX10615: Encryption failed. No support for: Algorithm: '{0}', SecurityKey: '{1}'."
这就是它的使用方式:
throw LogHelper.LogExceptionMessage(new SecurityTokenEncryptionFailedException(LogHelper.FormatInvariant(TokenLogMessages.IDX10615, encryptingCredentials.Enc, encryptingCredentials.Key)));
如果你遵循这条轨迹,你会发现如果ShowPII = true
,encryptingCredentials.Key
将被记录,如果ShowPII = false
,则不会被记录。
当然,根据您的用例,此特定消息可能永远不会出现在您的日志中。并不是所有的信息都如此漏洞百出。但你永远不会知道:
- 您的用例可能会更改
- 您可能误解了IdentityModel可以为您的用例发出的消息集
- IdentityModel代码可能会更改,您可能会忘记检查消息集是否仍然安全
关于
如果我需要找到一种方法来锁定我的日志文件
是的,你肯定需要。
或者更好的做法是,不要在生产中使用ShowPII = true
进行监控,只在开发环境中使用它进行调试。
查看源代码,当ShowPII
打开时,它会做两件事:
- 将传递给库特定异常的所有参数替换为其数据类型名称
- 对于所有系统异常-将内部消息替换为异常类型名称
在本文中;图书馆专用";是CCD_ 8类型的例外;微软IdentityModel;(库定义了一些(
根据您的用例,您会看到各种参数,这些参数可以与自定义异常一起记录。快速搜索FormatInvariant会产生很多值得您考虑的内容。
同样,根据您使用它的方式,通过查看特定命名空间上的相关LogMessages.cs
文件,您可能会更好地了解错误消息是什么。
p.S.:在旁注中,默认ShowPII
设置似乎是符合GDPR的