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

时间:2015-11-24 17:59:53

标签: asp.net authentication active-directory windows-authentication

我正在Active Directory / IIS / ASP.NET 4.5环境中创建一个通用信息门户。除此之外,门户网站将链接到多个人事请求表格,具体取决于它所针对的实体(赌场与赌场外的部落)。我已经开始使用赌场的申请表,在收到电子邮件提交工作后,我现在正处理我正在进行身份验证的问题。所有内容都使用母版页来确定它的重要性。

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

我已经看到了几种方法可以完成这样的事情,但是它们似乎都不适用于我正在做的事情。建议使用Trace.Warn()而不是Console.WriteLine()后,我设法让页面检查登录用户的身份,我在跟踪结果中看到了。但是,我遇到了一个障碍,让它完全检查用户的组,更不用说检查它们是否属于应该能够看到页面的特定组。对我来说最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您可以直接使用 Windows身份验证并希望保护用户所属的群组,那么如果您使用 web.config 并为每个群组分隔目录,则非常简单不同的安全级别。

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

您可以为您的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>

现在在 Sub directory1 下,您可以将其限制为安全组1 并阻止其他任何

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

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

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

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

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

enter image description here

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

enter image description here