ASP.NET Active Directory嵌套授权问题

ASP.NET Active Directory嵌套授权问题,asp.net,active-directory,authorization,Asp.net,Active Directory,Authorization,我正在开发一个内部ASP.NET应用程序,该应用程序使用Active Directory通讯组列表来管理访问该网站的用户 但是,由于此通讯组列表可能同时包含用户和组,因此我必须开发一个解决方案来检查当前用户是否能够访问此站点(例如,他们可能位于此通讯组列表的一部分的组中)。默认Windows身份验证模式不支持这种层次结构 我的问题是如何确保此网站中的每个资源只能由此通讯组列表中的人访问?我目前正在使用一个应用于每个页面的自定义属性,该属性检查用户的凭据,如果用户不是DL的成员,则重定向到“禁止访

我正在开发一个内部ASP.NET应用程序,该应用程序使用Active Directory通讯组列表来管理访问该网站的用户

但是,由于此通讯组列表可能同时包含用户和组,因此我必须开发一个解决方案来检查当前用户是否能够访问此站点(例如,他们可能位于此通讯组列表的一部分的组中)。默认Windows身份验证模式不支持这种层次结构

我的问题是如何确保此网站中的每个资源只能由此通讯组列表中的人访问?我目前正在使用一个应用于每个页面的自定义属性,该属性检查用户的凭据,如果用户不是DL的成员,则重定向到“禁止访问”页面。但是,我认为一定有更好的方法来做到这一点,不需要我在为该站点创建的每个页面上使用该属性


感谢您的帮助

在不更改基础身份验证方案的情况下避免重复的最简单的修复方法-不必在每个页面上使用它,您可以挂接到会话_开始事件并将身份验证值存储在那里,如果您有母版页,则在母版页的适当事件上检查该值。(同样,这是最省力的回答,直接针对您的问题)

更新(回复评论)

要管理组的权限,请使用以下xml块。请注意,这将完成您在对另一个答案的评论中提到的操作:这将阻止图像文件等。。。也是

<authorization>
      <allow roles="domain\group"/>
      <deny users="*"/>
</authorization>

此XML显示了在使用成员资格提供程序后如何配置web.config,以便允许/拒绝对文件和文件夹的权限(我从以下网站获得):


我最终滚动了自己的安全类,以检查当前登录的Active Directory用户是否具有访问权限

我使用了名称空间中的函数。此重载EDD方法采用布尔值,可用于递归搜索用户(满足“组中的我的组”问题)

安全类是一个单例,允许的active directory用户列表存储在单例中,以快速进行访问检查。我选择了一个单件,以确保服务器上只有这个列表的一个副本。我将允许的用户列表存储为,这大大提高了查找速度


当一个不存在的用户试图访问该站点时,原始用户查找结果将为负值。此时,安全类刷新用户列表,将此刷新的时间戳保存到允许的用户列表中。该方法最多每10分钟进行一次刷新,以防止用户对网站进行攻击(并使网站对其他用户保持响应)。

我很欣赏这种响应,但该网站将部署到一个我无法轻松接触的服务器上(由于它的严格控制)。这就是为什么我想让Active Directory组处理授权,因为我可以轻松地远程更改组成员的身份。David,我想这里可能有一些误解。你的目标和我的帖子完全一致,也许我的演讲不够完整。。。我已经修改了(我现在正在做)我的示例,以显示如何控制组的权限。读了你的评论后,我意识到它只显示“用户”项目。我一定完全忽略了你提到的ActiveDirectoryMembershipProvider!对不起,先生,我不知道有这样的事情存在。如果这是可行的,那么它将比应用程序/母版页建议更容易!没错,这是一种非常简单的方式来执行我所需要的自定义身份验证。此方法是否还会阻止未经身份验证的用户访问其他非页面资源(例如网站上托管的图像)?
<configuration>
    <system.web>
        <authentication mode="Forms" >
            <forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" >
            </forms>
        </authentication>
<!-- This section denies access to all files in this application except for those that you have not explicitly specified by using another setting. -->
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
<!-- This section gives the unauthenticated user access to the Default1.aspx page only. It is located in the same folder as this configuration file. -->
        <location path="default1.aspx">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Subdir1 folder.  -->
        <location path="subdir1">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
</configuration>