MVC3 authorization using AD

血红的双手。 提交于 2020-01-01 03:34:06

问题


Is it possible to authorise/deny users of an MVC3 application using AD?

My app is secured using Windows authentication at the moment, but that means adding users to groups on the Win2007 server.

I'd like to change that so that users were allowed/denied access to the appliction/and controller actions/view based upon their AD roles instead, so they either auto-logged in (like Windows auth) or they get redirected to a "denied" page.

Any help very gratefully accepted...everything I find seems to be based upon Windows groups, or forms authentication.


回答1:


You could use the Roles property:

[Authorize(Roles = @"SOMEDOMAIN\somegroup")]
public ActionResult Foo()
{
    ...
}

Here's a tutorial which explains the steps.




回答2:


I'm using AD Groups for my intranet app.

<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>

then just added Authorization attributes to my controller actions that I needed to secure:

[Authorize(Roles = MyNamesspace.Constants.MANAGER_GROUP)]
public ActionResult Blah() {...

And in a view you can use User.IsInRole and the name of their AD/Windows group.

Or get a list of the roles the webserver sees from that user: System.Web.Security.Roles.GetRolesForUser();

Caveat: my server and my clients are all on the same domain. this won't work if you need to do the same for web clients off site against your ActiveDirectory.




回答3:


Just use the Membership provider framework that comes built-in to Asp.net. You will find that there is already an ActiveDirectoryMembershipProvider out of the box, but you will have to implement the RoleProvider yourself, as membership can be defined different ways in different networks.



来源:https://stackoverflow.com/questions/6101330/mvc3-authorization-using-ad

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!