以编程方式将应用程序池标识设置为域用户

时间:2019-09-02 02:38:35

标签: c# security authentication iis-7

我有一个小问题,我们有一个IIS应用程序,但是由于开发机构的一些严苛的安全设置,它们不能使用IIS集成身份,因为所有本地帐户都被拒绝访问本地硬盘,网络等。因此,开发人员需要进入高级设置,并将其域名和密码设置为网站,文件夹和应用程序池的身份验证方法。

我一直在考虑使之自动化,这样我就不必让系统进入选择每个应用程序池,高级设置,输入域名,密码并在所有池中进行设置的方式进行连接,而是希望它们能够将其凭据输入到应用程序中,然后该应用程序将系统地更新所有凭据以进行匹配,我可以看到这是可能的,但是没有一个示例显示如何获取域凭据等,或者是否存在使用设置凭据的简单方法“当前登录用户”,因此我们需要做的就是让计算机在登录时运行该程序以每次设置身份验证,以便将域上的任何密码更改反映在本地IIS设置中。

我想我可以获取CurrentUser信息,然后使用LookupAccountSid获取SID,但是如何复制配置部分?在哪里单击“设置用户”,然后输入您的域名和密码?

这似乎有可能,但是没有有关如何实际执行此操作的信息。我认为这张照片将显示我的意思:

The Set Credentials box I want to set programatically

1 个答案:

答案 0 :(得分:0)

  

在哪里单击“设置用户”,然后输入您的域名和密码?   这似乎是可行的,但是没有有关如何实际执行此操作的信息。谁能为此提供解决方案?

根据您的描述,我想您想使用模拟来满足您的要求。

据我所知,应用程序池标识可以使用用户的假名登录以通过模拟来访问文件夹。

使用特定用户或经过身份验证的用户的模拟支持。经过身份验证的用户意味着使用当前登录用户作为应用程序池身份验证。例如,您可以启用Windows身份验证,它将使用用户中的当前登录名作为应用程序池标识。

如果要启用模拟功能,建议您首先启用Windows身份验证。

然后,您可以按照以下web.config中的配置进行操作。

1。打开IIS管理器并导航到要管理的级别。有关打开IIS管理器的信息,请参阅打开IIS管理器(IIS 7)。有关在UI中导航到位置的信息,请参阅IIS管理器(IIS 7)中的导航。

2。在“功能视图”中,双击“身份验证”。

3。在“身份验证”页上,选择“ ASP.NET模拟”。

4。在“操作”窗格中,单击“启用”以使用具有默认设置的ASP.NET模拟身份验证。

5.(可选)在“操作”窗格中,单击“编辑”以设置安全主体。

6。在“编辑ASP.NET模拟设置”对话框中,选择“特定用户”或“经过身份验证的用户”。不论您决定采用哪种方式,IIS都将此身份用于ASP.NET应用程序的安全上下文。默认情况下,IIS 7设置为模拟经过身份验证的用户。

7。单击“确定”完成或继续以下可选步骤以更改身份以模拟。

8.(可选)单击“设置”以更改“特定用户身份”。

9。在“设置凭据”对话框中,在“用户名”中输入现有用户帐户的名称,在“密码”中输入与该用户帐户关联的密码,然后在“确认新帐户的IIS的密码”中使用完全相同的值。进行匿名访问。

您还可以使用以下命令来实现您的要求。

使用经过身份验证的用户:

appcmd set config /commit:WEBROOT/section:identity /impersonate:true | false

使用特定用户

appcmd set config /commit:WEBROOT/section:identity /userName:**string **/password:**string