主办我有一个asp.net网站,在IIS 7.5与ASP.NET面临的问题在IIS和Windows身份验证
该网站有使用Windows身份验证托管。用户被添加到AD组。 AD用户组完全控制网站发布的Web文件夹。 Server/IIS_IUSRS也可以完全控制Web文件夹。
网站需要使用的数据存储在另一台服务器上。 AD组完全控制存储数据的文件夹。 我正在使用经典模式,因为Integrated可以打破它。
什么应该是网站身份验证和APP池设置?
主办我有一个asp.net网站,在IIS 7.5与ASP.NET面临的问题在IIS和Windows身份验证
该网站有使用Windows身份验证托管。用户被添加到AD组。 AD用户组完全控制网站发布的Web文件夹。 Server/IIS_IUSRS也可以完全控制Web文件夹。
网站需要使用的数据存储在另一台服务器上。 AD组完全控制存储数据的文件夹。 我正在使用经典模式,因为Integrated可以打破它。
什么应该是网站身份验证和APP池设置?
就我个人而言,我已经成为将应用程序池标识设置为AD服务帐户,然后允许应用程序使用这些凭据访问数据库和其他资源的粉丝。无需传递连接字符串上的凭据或尝试模拟用户(编辑:应注意,这适用于使用Windows集成安全性的资源)。也不需要试图让用户直接访问数据存储区或其他资源,只需要应用程序凭证即可访问。最初设置起来有点麻烦,但从长远来看更容易管理。
下面是我发送给我们的服务器组的清单,只要我要求他们为我设置一个新站点:(注意这是基于Win Serv2003和IIS 6,在新版本中可能会有所不同)。
别把IIS autorization和ASP.NET autorization:
IIS autorization
ASP。NET autorization
<authorization>
元素)限制访问您的网站:
提供对数据的访问文件夹,几个解决方案:
在访问数据文件夹时使用默认的IIS 7 ASP.NET帐户和impersonate本地用户在您的代码中
System.Security.Principal.WindowsImpersonationContext impersonationContext; ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
//在此处输入您的代码,该代码在 用户的 安全上下文中运行。
impersonationContext.Undo();
激活全球范围内的impersonation(<identity impersonate="true"/>
);不喜欢这一个
(((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();)我必须在Global.asax或每个方法中只执行一次吗?另外你为什么不喜欢在web.config模拟? – InfoLearner 2011-03-24 00:16:58
冒充整个站点可能会带来自动化/委派/安全问题,同时伪装一段代码会隔离特定的安全需求和行为。 – JoeBilly 2011-03-24 17:14:14
感谢您的回复。这是否意味着任何输入网站URL的人都能够自动登录?我只希望属于某个用户组的用户访问该网站。 – InfoLearner 2011-03-23 20:51:04
您仍然可以通过任何适当的方式确保访问网站。您不必担心试图让用户访问后端资源。在我工作的大多数应用程序中,我们都有一个授权管理系统。该应用程序将Windows用户标识和其他一些信息传递给安全插件,并以每个用户允许的内容做出响应。类似的事情可以使用安全组来完成。 – Rozwel 2011-03-24 11:33:06