Asp.net NTLM作为SSO,并作为模拟管理员执行某些操作
我似乎无法找到IIS/ASP.NET设置的正确组合来完成以下任务:Asp.net NTLM作为SSO,并作为模拟管理员执行某些操作,asp.net,authentication,iis-6,ntlm,Asp.net,Authentication,Iis 6,Ntlm,我似乎无法找到IIS/ASP.NET设置的正确组合来完成以下任务: 内部域上的所有用户都应该能够访问IIS站点(通过NTLM身份验证),并且ASP.NET应用程序应该能够获取当前用户的用户名(也称为用户本身已通过身份验证) 正在运行的ASP.NET应用程序应该能够在管理员帐户下执行某些操作。例如,Active Directory更改,或将文件写入受限制的位置 您可能会猜到,但应用程序的要点是能够让“普通”用户通过web应用程序进行特定的“管理”更改。同时,应该使用“普通”用户的帐户记录更改,因此
查找IIS6中的特定设置以完成#1(域上的任何用户都可以访问站点并作为自己进行身份验证),以及#2的代码。至少有两个选项: 两者都有共同之处:
- 您的IIS设置应设置为windows身份验证
- 用户的身份可以从httpcontext中读取
- 将模拟设置为false
- 将应用程序池的标识设置为有权进行AD更改的用户
- 将上述用户添加到IIS_WPG组
- 进行广告更改时,将线程的标识设置为允许进行广告更改的用户的标识
从安全的角度来看,最好的方法是将所有管理操作分离到自己的Web服务中,该Web服务进行身份验证,但不模拟。站点的正常部分将通过调用web服务来执行管理操作,就像任何其他客户端一样,即使是本地主机调用 通过这种方式,可以实现普通应用程序池(模拟)和特权应用程序池(管理)之间的隔离 最后,这可能是吹毛求疵,但它应该是Kerberos身份验证,而不是NTLM,因为NTLM不允许,并且如果您的“正常”应用程序访问本地IIS主机之外的任何内容,则需要启用委派