Asp.net 使用登录用户Windows标识的IIS应用程序池标识
我正在开发一个web应用程序,它使用LDAP执行Active Directory更新。 当我在IIS 7上托管应用程序时,在语句Asp.net 使用登录用户Windows标识的IIS应用程序池标识,asp.net,asp.net-mvc,iis-7,Asp.net,Asp.net Mvc,Iis 7,我正在开发一个web应用程序,它使用LDAP执行Active Directory更新。 当我在IIS 7上托管应用程序时,在语句directoryEntry.CommitChanges()处出现访问被拒绝错误 然后我发现应用程序池正在使用标识“IIS APPPOOL\ASP.NET v4.0”执行更新 我需要使用web应用程序的用户的窗口帐户作为应用程序池的标识 我已经做了以下工作: 在web.config中添加>身份验证模式=“Windows” 已禁用IIS上的匿名身份验证 选择内置帐户“Ap
directoryEntry.CommitChanges()处出现访问被拒绝
错误代码>
然后我发现应用程序池正在使用标识“IIS APPPOOL\ASP.NET v4.0”执行更新
我需要使用web应用程序的用户的窗口帐户作为应用程序池的标识
我已经做了以下工作:
在web.config中添加>身份验证模式=“Windows”
已禁用IIS上的匿名身份验证
选择内置帐户“ApplicationPoolIdentity”作为应用程序池的标识
但是它仍然没有发挥作用。您正在寻找的概念称为模拟
从:
打开IIS管理器并导航到要管理的级别。有关打开IIS管理器的信息,请参阅打开IIS管理器(IIS 7)。有关导航到UI中位置的信息,请参阅IIS管理器(IIS 7)中的导航
在“功能”视图中,双击“身份验证”
在身份验证页面上,选择ASP.NET模拟
在“操作”窗格中,单击“启用”以使用默认设置的ASP.NET模拟身份验证
(可选)在“操作”窗格中,单击“编辑”以设置安全主体
在“编辑ASP.NET模拟设置”对话框中,选择“特定用户”或“已验证用户”。无论您选择哪个,IIS都将此标识用于ASP.NET应用程序的安全上下文。默认情况下,IIS 7设置为模拟经过身份验证的用户
单击“确定”完成或继续执行下一个可选步骤以将标识更改为模拟
(可选)单击“设置”以更改特定用户标识
在“设置凭据”对话框中,在“用户名”中输入现有用户帐户的名称,在“密码”中输入与该用户帐户关联的密码,然后在“确认密码”中输入与IIS应用于匿名访问的新帐户完全相同的值
单击“确定”关闭“设置凭据”对话框
单击“确定”关闭“编辑ASP.NET模拟设置”对话框
您正在寻找的概念称为模拟
从:
打开IIS管理器并导航到要管理的级别。有关打开IIS管理器的信息,请参阅打开IIS管理器(IIS 7)。有关导航到UI中位置的信息,请参阅IIS管理器(IIS 7)中的导航
在“功能”视图中,双击“身份验证”
在身份验证页面上,选择ASP.NET模拟
在“操作”窗格中,单击“启用”以使用默认设置的ASP.NET模拟身份验证
(可选)在“操作”窗格中,单击“编辑”以设置安全主体
在“编辑ASP.NET模拟设置”对话框中,选择“特定用户”或“已验证用户”。无论您选择哪个,IIS都将此标识用于ASP.NET应用程序的安全上下文。默认情况下,IIS 7设置为模拟经过身份验证的用户
单击“确定”完成或继续执行下一个可选步骤以将标识更改为模拟
(可选)单击“设置”以更改特定用户标识
在“设置凭据”对话框中,在“用户名”中输入现有用户帐户的名称,在“密码”中输入与该用户帐户关联的密码,然后在“确认密码”中输入与IIS应用于匿名访问的新帐户完全相同的值
单击“确定”关闭“设置凭据”对话框
单击“确定”关闭“编辑ASP.NET模拟设置”对话框
在我的配置中,它使用active directory帐户和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>
在我的配置中,它使用active directory帐户和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>
您好,谢谢您的建议
我已经尝试过,当我检查“System.Security.Principal.WindowsIdentity.GetCurrent().Name”的值时,仍然显示“IIS APPPOOL\ASP.NET v4.0”,这意味着应用程序仍在使用IIS APPPOOL标识运行web应用程序,而不是登录用户的windows帐户。
这是我现在使用的IIS身份验证和模拟设置的屏幕截图:我还尝试了web.config中的“identity impersonate=true”,也无效。嗨,谢谢你的建议
我已经尝试过,当我检查“System.Security.Principal.WindowsIdentity.GetCurrent().Name”的值时,仍然显示“IIS APPPOOL\ASP.NET v4.0”,这意味着应用程序仍在使用IIS APPPOOL标识运行web应用程序,而不是登录用户的windows帐户。
这是我现在使用的IIS身份验证和模拟设置的屏幕截图:我还在web.config中尝试了“identity impersonate=true”,但也不起作用