C# 面临IIS和Windows身份验证中托管的ASP.NET的问题

C# 面临IIS和Windows身份验证中托管的ASP.NET的问题,c#,asp.net,iis,C#,Asp.net,Iis,我有一个asp.net网站,它托管在IIS 7.5中 该网站必须使用windows身份验证。用户将被添加到广告组。广告用户组对发布网站的web文件夹具有完全控制权。服务器/IIS\u IUSRS对web文件夹也具有完全控制权 网站需要使用的数据存储在另一台服务器中。AD组对存储数据的文件夹具有完全控制权。 我使用的是经典模式,因为集成破坏了它 网站身份验证和应用程序池设置应该是什么 我个人喜欢将应用程序池标识设置为广告服务帐户,然后允许应用程序使用这些凭据访问数据库和其他资源。无需在连接字符串上

我有一个asp.net网站,它托管在IIS 7.5中

该网站必须使用windows身份验证。用户将被添加到广告组。广告用户组对发布网站的web文件夹具有完全控制权。服务器/IIS\u IUSRS对web文件夹也具有完全控制权

网站需要使用的数据存储在另一台服务器中。AD组对存储数据的文件夹具有完全控制权。 我使用的是经典模式,因为集成破坏了它


网站身份验证和应用程序池设置应该是什么

我个人喜欢将应用程序池标识设置为广告服务帐户,然后允许应用程序使用这些凭据访问数据库和其他资源。无需在连接字符串上传递凭据或尝试模拟用户(编辑:应注意,这适用于使用windows集成安全性的资源)。此外,无需尝试为用户提供对数据存储或其他资源的直接访问权限,只需应用程序凭据具有访问权限即可。最初设置起来有点麻烦,但从长远来看更容易管理

每当我要求我们的服务器组为我设置一个新站点时,我都会向他们发送以下清单:(注意,这是基于Win Serv2003和IIS 6的,在较新的版本中可能会有所不同。)

  • 为应用程序设置单独的应用程序池 应用
  • 将应用程序池配置为作为 服务帐户
  • 将服务帐户添加到 服务器上的IIS_WPG组
  • 确保IIS_WPG组已读取, 读取并执行,并列出文件夹 网站的内容权限 目录和读取列表文件夹 C:\Windows\Temp目录的内容 文件夹(或同等文件)
  • 授予用户“调整内存”的权限 进程的配额“,”替换 “进程级令牌”和“以身份登录” “服务”到服务帐户

不要混淆IIS自动化和ASP.NET自动化:

IIS自动化

  • IP/DNS地址限制
  • Web权限(读、写、脚本源访问…)
  • NTFS权限(仅限非ASP.NET ISAPI扩展名:.htm、.jpg…)
ASP.NET自动化

  • URL授权(
    访问数据文件夹时,用户在代码中的本地权限


    System.Security.Principal.WindowsImpersonationContext 模拟语境; 模拟上下文=
    ((System.Security.Principal.WindowsIdentity)User.Identity.Impersonate()

    //插入在下运行的代码 身份验证的安全上下文 用户在这里

    impersonationContext.Undo()

  • 全局激活(
    );不喜欢这个


感谢您的回复。这是否意味着任何输入网站URL的人都可以自动登录?我只希望属于某个用户组的用户能够访问该网站。您仍然可以通过任何适当的方式确保对该网站的访问。您不必担心试图让用户访问该网站后端资源。在我使用的大多数应用程序中,我们都有一个授权管理系统。该应用程序将windows用户ID和一些其他信息传递到安全插件中,并响应每个用户可以执行的操作。使用安全组可以完成类似的操作。((system.security.Principal.WindowsIdentity)User.Identity).Impersonate();)我必须在Global.asax中或在每个方法中只执行一次吗?还有,为什么不喜欢在web.config中进行模拟?模拟整个网站可能会带来自动化/委派/安全问题,而模拟一段代码会隔离特定的安全需求和行为。