题
我正在编写一个与Exchange一起使用的Web应用程序,因此需要模拟一个具有Exchange管理权限的帐户。此帐户由用户在安装时指定。模拟使用此帐户的最佳方式是什么,显然将其硬编码到web.config中将无法正常工作,因为它需要能够更改,但我不确定最好的方法。 另外,我实际上只需要作为1个类的管理用户运行,是否可以仅模拟某些方法?
解决方案
我发布了一个关于使用模拟访问网络文件共享的答案,但它也适用于您。它包含c#类的源代码,可用于管理模拟的开始/结束,并可由任何类或方法使用。
提供的源确实假设您将用户名和密码存储在web.config中。
请参阅原始问题与解答更多细节。
其他提示
我过去这样做的方法是使用LogonUser。以下链接提供了有关如何解决此问题的一些指导。
http://blogs.msdn.com/shawnfa /archive/2005/03/21/400088.aspx
http://www.guidanceshare.com/wiki/ASP .NET_2.0_Security_Guidelines _-_模拟/委派
您可能还需要考虑是否可以使用Exchange模拟并让您的应用程序在固定标识下运行通过Exchange Web服务模拟Exchange 。
您可以按上述方式执行此操作,但在此方案中,在安装过程中仅修改web.config有什么问题?
除了其他人注意到的LogonUser或WindowsImpersonationContext类之外,您还可以考虑分离出特权代码。例如,作为Enterprise Services对象运行(在COM +下运行)。这将允许您让操作系统管理凭据,并且您拥有围绕特权代码的内置信任边界 当然,您需要对谁可以调用此对象实施限制,但这很容易配置......