我们如何在.NET中进行模拟?

时间:2020-03-06 14:38:30  来源:igfitidea点击:

是否有一种简单的开箱即用的方法来模拟.NET中的用户?

到目前为止,我一直在代码项目中使用此类来满足我的所有模拟要求。

使用.NET Framework是否有更好的方法呢?

我有一个用户凭据集(用户名,密码,域名),它代表我需要模拟的身份。

解决方案

这是.NET模拟概念的一些很好的概述。

  • Michiel van Otegem:WindowsImpersonationContext变得容易
  • WindowsIdentity.Impersonate方法(签出代码示例)

基本上,我们将利用.NET框架中现成的这些类:

  • WindowsImpersonationContext
  • WindowsIdentity

该代码通常会很冗长,这就是为什么我们会看到许多示例(例如我们引用的示例)试图简化该过程的原因。

这可能是我们想要的:

using System.Security.Principal;
using(WindowsIdentity.GetCurrent().Impersonate())
{
     //your code goes here
}

但我确实需要更多详细信息来。我们可以使用配置文件(如果要在网站上进行此操作)进行模拟,或者如果它是WCF服务,则可以通过方法装饰器(属性)进行模拟,或者通过...我们可以理解。

另外,如果我们要假冒模拟称为特定服务(或者Web应用程序)的客户端,则需要正确配置客户端,以使其传递适当的令牌。

最后,如果我们真正想要做的是委派,则还需要正确设置AD,以便信任用户和计算机进行委派。

编辑:
在这里看看如何模拟其他用户,并获得进一步的文档。