【问题标题】:Programmatically set App Pool identity to Domain user以编程方式将应用程序池标识设置为域用户
【发布时间】:2019-09-02 02:38:35
【问题描述】:

我有一个小问题,我们有一个 IIS 应用程序,但由于开发公司的一些严格的安全设置,他们无法使用 IIS 集成身份,因为所有本地帐户都被拒绝访问本地硬盘驱动器、网络等。因此开发者需要进入高级设置,将自己的域名和密码设置为站点、文件夹和应用池的认证方式。

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

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

这似乎是可能的,但没有关于如何实际执行此操作的信息。我想这张照片会说明我的意思:

【问题讨论】:

标签: c# security authentication iis-7


【解决方案1】:

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

根据您的描述,我猜您想使用模拟来实现您的要求。

据我所知,应用程序池身份可以使用用户权限中的登录来通过模拟访问文件夹。

使用特定用户或经过身份验证的用户的模拟支持。认证用户是指使用当前用户登录作为应用程序池身份权限。例如,您可以启用 windows 身份验证,它将使用当前登录用户作为应用程序池身份。

如果你想开启模拟,我建议你可以先开启windows认证。

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

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

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

3.在身份验证页面上,选择 ASP.NET Impersonation。

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

【讨论】:

  • 问题是 iisusr 已被拒绝访问以执行任何操作,因此我们必须使用整个 iis 的固定身份作为您自己的域登录,问题是当 90 天密码更改到来时强制您手动记住需要更改的每个服务和应用程序池,或者由于登录尝试失败次数过多而锁定您的登录
猜你喜欢
  • 1970-01-01
  • 2012-04-23
  • 2013-01-20
  • 2015-01-22
  • 2015-05-21
  • 2019-03-22
  • 2011-01-10
  • 1970-01-01
  • 2013-10-12
相关资源
最近更新 更多