在.NET中审核用户身份 - 什么是好策略?

时间:2010-01-06 17:39:51

标签: .net identity audit

我确信这是许多开发人员以前面临的要求:业务需要审计跟踪,以了解谁在他们的系统中执行操作。

无论您如何选择存储审计信息,此问题的核心是如何识别当前用户。

我想编写从小型域模型类到服务组件的组件,所有组件都可以安全地从以下任何主机应用程序中调用:

  • Windows桌面应用程序。
  • IIS中托管的ASP.NET网站。
  • IIS中托管的WCF服务。
  • Windows服务中托管的WCF服务。

考虑到各种技术,各种身份验证模型以及必须考虑“匿名”用户的概念,我不清楚使用什么策略来获取以集中方式调用我的组件的人的身份

你们中的任何一位聪明的人都能提出解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:4)

使用最新技术的最佳方法可能是使用Windows Identity Foundation

WIF旨在使用.NET处理多种技术中的用户身份问题。

答案 1 :(得分:2)

我通常要求应用程序将Thread.CurrentPrincipal设置为其身份代表当前用户的主体。这可以在客户端(WinForms或控制台)应用程序中的应用程序启动(使用WindowsIdentity.GetCurrent()),在IIS中托管的ASP.NET或WCF应用程序中的HttpContext.Current.User或Roles.GetCurrentUser()中完成。

然后在较低级别的组件中,您只需使用Thread.CurrentPrincipal.Identity进行审核。

修改 (回应评论) - 请注意Thread.CurrentPrincipal.Identity与线程的安全上下文无关:这由WindowsIdentity表示,可以使用WindowsIdentity.GetCurrent检索并使用WindowsIdentity.Impersonate进行更改