IIS应用程序池标识使用登录用户的Windows标识(IIS Application Pool Id

2019-09-29 07:53发布

我开发,使用LDAP进行的Active Directory更新一个web应用程序。 当我主机上的IIS 7的应用程序,我得到的Access is denied在语句错误directoryEntry.CommitChanges();

后来我发现,该应用程序池使用标识“IIS APPPOOL \ ASP.NET v4.0的”执行更新。

我需要窗口的帐户谁在使用Web应用程序是应用程序池身份的用户。

我也做了以下情况:

  1. 添加>身份验证模式=“窗口”在web.config中
  2. 在IIS中禁用匿名身份验证
  3. 选择内置的帐户“ApplicationPoolIdentity”作为应用程序池的标识

但是没有仍然得到它的工作。

Answer 1:

您正在寻找的概念被称为模拟
从文档 :

  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完全相同的值应该使用匿名访问。
  10. 单击确定关闭设置凭据对话框。
  11. 单击确定关闭编辑ASP.NET模拟设置对话框。


Answer 2:

在我的情况与此配置它与活动目录帐户和System.Security.Principal.WindowsIdentity.GetCurrent()的结果日志。名称是验证会话

<identity impersonate="true"/>
<authentication mode="Windows">
  <forms name="Login" loginUrl="Login.aspx" path="/" timeout="10"/>
</authentication>
<authorization>
  <deny users="?"/>
  <allow users="*"/>
</authorization>


文章来源: IIS Application Pool Identity to use Logged On User Windows Identity