如何使用角色来防范AD

时间:2011-12-23 21:57:26

标签: asp.net-mvc-3 windows-authentication

我正在为我的公司创建一个内部网站,其中所有访问此网站的人都是AD的一部分。

我要做的是,当用户连接到该站点时,它们会自动针对AD进行身份验证。根据他们是这个特定网络应用程序(一些AD组)的一部分,我向他们展示了网站的不同视图。

目前,我开始使用简单的东西(但我认为不正确),因为我在_Layout.cshtml中有AD逻辑,并根据我到达的结果,然后显示不同的视图页面的其余部分(各种部分视图)。这有效,但感觉不对。

我还认为我会遇到一个问题,我希望这种身份验证能够在整个网站上传播 - 不仅仅是每个视图,而是实际限制用户可以访问的内容,并仅向他们显示与之关联的数据。

有人对正确的方法有任何建议吗?我已经搜索了教程,但没有特别跳出来对我说。

3 个答案:

答案 0 :(得分:2)

虽然它声明过时但它与您的使用完全相关。查看How To: Use Membership in ASP.NET 2.0 with the Actve Directory Membership Provider

更新

I did run across this, but, I want to avoid the user having to log in. I like the auto nature of the Windows authentication. Can this forms approach be modified to work with Windows authentication?

不完全是。如果您不希望用户键入用户名和密码,则需要使用Windows Authentication并且他们必须使用Internet Explorer(至少上次使用Windows身份验证时)。

Windows身份验证会执行大量额外配置。您必须允许可以登录IIS目录的用户。我很确定你不能使用SQL连接池,所以如果你的网站使用SQL服务器,每个用户都必须登录到SQL。

答案 1 :(得分:1)

原来我是一个彻头彻尾的人。

这适用于Windows身份验证返回AD ...

[Authorize(Roles = @"DOMAIN\an.ad.group")]
public ActionResult About()
{
    return View();
}

为什么它对我不起作用?事实证明我拼错了我的组名。 : - (

答案 2 :(得分:0)

您可以通过使用Sharepoint来实现此目的的最佳方法之一。它已经具有与AD连接的结构。 http://sharepoint.microsoft.com/en-us/Pages/Try-It.aspx