Windows ASP.NET 中的身份验证检查特定用户安全组

Windows Authentication in ASP.NET checking for a specific user security group

我正在 Active Directory/IIS/ASP.NET 4.5 环境中创建一个通用信息门户。除其他事项外,该门户网站将 link 用于多个人员申请表,具体取决于它针对的是哪个实体(赌场与赌场外的部落)。我从赌场的申请表开始,在使电子邮件提交正常工作后,我现在要进行身份验证。一切都使用母版页进行布局。

我对用户进行身份验证的计划是使用 Windows 身份验证来检查登录到工作站的用户,然后检查该用户是否属于我们专门为人们设置的特定安全组能够访问申请表。请注意,我不想锁定整个网站,而是锁定网站上的个别页面。此外,可以访问赌场申请表的人不应访问一般部落申请表,反之亦然。

我见过几种方法来完成这样的事情,但 none 似乎对我正在做的事情很有效。在被建议使用 Trace.Warn() 而不是 Console.WriteLine() 之后,我设法让页面检查登录用户的身份,我在跟踪结果中看到了这一点。但是,我 运行 遇到了障碍,无法让它检查用户的组,更不用说检查它们是否属于应该能够看到该页面的特定组了。我最好的方法是什么?

如果您可以直接使用Windows 身份验证 并希望保护用户所属的组,那么使用[ 就非常简单了=53=] 并为每个不同的安全级别单独的目录。

只需将请求表单放入单独的子目录中,而不是放在同一个目录中。

您将为您的 Web 应用程序设置目录结构,例如这样

My web application root
|__ web.config
   |__ Sub directory1
      |__ web.config
   |__ Sub directory2
      |__ web.config

在您的 Web 应用程序根目录中的 web.config 中,您可以授予更多访问权限和组 安全组 1、安全组 2、安全组第 3 组 将能够看到根目录中的页面。

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <allow roles="Secure group 1, Secure group 2, Secure group 3" />
        <deny users="*, ?" />
    </authorization>
    ...
</system.web>

现在在 子目录 1 下,您可以将其限制为 安全组 1 并阻止任何其他人

<system.web>
    <authorization>
        <allow roles="Secure group 1" />
        <deny users="*, ?" />
    </authorization>
</system.web>

等等。没有该组的用户将无法查看此子目录中的任何页面。

如果您想直接查找组成员资格并在代码中拒绝它,它会变得更加复杂。

启用Windows身份验证(在 IIS 中)

转到 IIS 管理器并为您的 Web 应用程序打开身份验证

禁用除 Windows 身份验证之外的其他身份验证方法