是否可以使用AD授权/拒绝MVC3应用程序的用户?
我的应用目前使用Windows身份验证进行保护,但这意味着将用户添加到Win2007服务器上的群组。
我想更改它,以便允许/拒绝用户根据其AD角色访问应用程序/和控制器操作/视图,因此他们要么自动登录(如Windows身份验证),要么重定向到“被拒绝”的页面。
任何帮助都非常感激地接受......我发现的所有内容似乎都基于Windows组或表单身份验证。
答案 0 :(得分:4)
您可以使用角色属性:
[Authorize(Roles = @"SOMEDOMAIN\somegroup")]
public ActionResult Foo()
{
...
}
这是一个解释步骤的tutorial。
答案 1 :(得分:2)
我正在使用AD Groups作为我的Intranet应用程序。
<authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
然后只是将Authorization属性添加到我需要保护的控制器操作中:
[Authorize(Roles = MyNamesspace.Constants.MANAGER_GROUP)]
public ActionResult Blah() {...
在视图中,您可以使用User.IsInRole
及其AD / Windows组的名称。
或者获取网络服务器从该用户看到的角色列表:System.Web.Security.Roles.GetRolesForUser();
警告:我的服务器和我的客户都在同一个域上。如果您需要针对ActiveDirectory对网站外的Web客户端执行相同操作,则无法使用此功能。
答案 2 :(得分:2)
只需使用内置于Asp.net的Membership provider框架即可。您会发现已经有ActiveDirectoryMembershipProvider开箱即用,但您必须自己实施RoleProvider
,因为可以在不同的网络中以不同的方式定义成员资格。