我已经实现了基于 System.Diagnostics 的跟踪。
我还在使用 System.Diagnostics.TextWriterTraceListener,并将整个跟踪连接到 MOSS 2007 Web 应用程序。
由于某种原因,跟踪尝试 (a) 创建日志文件,和/或 (b) 使用当前正在浏览 SharePoint 站点的用户写入日志文件,有没有办法配置日志记录以使用特定的用户帐户而不是?
我已经实现了基于 System.Diagnostics 的跟踪。
我还在使用 System.Diagnostics.TextWriterTraceListener,并将整个跟踪连接到 MOSS 2007 Web 应用程序。
由于某种原因,跟踪尝试 (a) 创建日志文件,和/或 (b) 使用当前正在浏览 SharePoint 站点的用户写入日志文件,有没有办法配置日志记录以使用特定的用户帐户而不是?
显然,MOSS 被配置为使用 Windows 身份验证(kerberos)和模拟。如果您不需要模拟当前登录到 moss 的用户,请关闭模拟(在 web.config 中)。您会发现日志文件将由运行 moss 安装的应用程序池的用户创建和写入。
如果您必须使用模拟,那么另一种解决方案是授予每个人在日志目录中创建和写入文件的权限(并且只能在日志目录中)。然而,这并不是最好的主意。您可以禁止所有人的读取权限,但需要读取日志的人除外,但您仍然需要担心有人试图通过填满磁盘来攻击您。
第三种选择是在登录之前切换身份。像这样的东西可能会起作用:
var wic = WindowsIdentity.Impersonate(IntPtr.Zero); // "revert to self"
/* LOG GOES HERE K */
wic.Undo(); // return to impersonation
大警告:我自己只是在学习这些东西,所以上面的代码可能根本不起作用。如果是这样,那就太好了,因为您无需 p/invoke 即可登录您的日志编写身份,这也意味着您不必创建该用户并将其密码以明文形式存储在您的应用程序中。
我想知道这个的老斯基特在哪里?Windows 安全需要一些繁重的工作;我现在刚开始在酒吧...
请不要告诉我这是必要的 - http://www.15seconds.com/Issue/040511.htm?voteresult=5