我正在编写一个与 Exchange 配合使用的 Web 应用程序,因此需要模拟一个对 Exchange 具有管理员权限的帐户。此帐户由用户在设置时指定。模拟使用此帐户的最佳方法是什么,显然将其硬编码到 web.config 中是行不通的,因为它需要能够更改,但我不确定最好的方法。另外,我实际上只需要以这个管理用户的身份运行 1 个类,是否可以只模拟某些方法?
4 回答
我发布了关于使用模拟访问网络文件共享的答案,但它也应该适用于您。它包括 ac# 类的源代码,可用于管理模拟的开始/结束,并可被任何类或方法使用。
提供的源代码假定您将用户名和密码存储在 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_-_Impersonation/Delegation
您可能还需要考虑是否可以使用 Exchange 模拟,并让您的应用程序在可以通过 Exchange Web 服务在 Exchange 中模拟的固定身份下运行。
您可以按照上述方式进行操作,但在这种情况下,在设置过程中仅修改 web.config 有什么问题?
除了其他人指出的 LogonUser 或 WindowsImpersonationContext 类之外,您还可以考虑分离出特权代码。例如,作为企业服务对象运行(在 COM+ 下运行)。这将允许您让操作系统管理凭据,而且您在特权代码周围有一个内置的信任边界。
当然,您需要对谁可以调用此对象实施限制,但这很容易配置......