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

问题描述 投票:0回答:1

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

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

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

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

The Set Credentials box I want to set programatically

c# security authentication iis-7
1个回答
0
投票

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

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

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

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

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

然后您可以按照以下web.config中的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
© www.soinside.com 2019 - 2024. All rights reserved.