我试图认证使用ASP.NET MVC中的用户和组对Active Directory。
我把所有我的类(除了帐户类)以下属性:
[Authorize (Roles="SubcontractDB Users")]
此组位于活动目录中的OU = Area-> OU = Groups-> OU = Company-> CN = SubcontractDB下。我假设我还需要在web.config中设置一个RoleManager,我试图做如下:
<roleManager defaultProvider="ADRoleProvider"> <providers> <clear /> <add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" /> </providers> </roleManager>
我的连接字符串是:
<add name="ADConnectionString" connectionString="LDAP://blah.com:389/DC=blah,DC=wateva,DC=com"/>
显然我做错了,因为这不工作。我所要做的是允许访问作为AD中某个组成员的用户。
解决方法
不再需要在ASP.NET MVC 3中为此功能实现您自己的属性。AspNetWindowsTokenRoleProvider与Active Directory用户和组配合使用。要与AuthorizeAttribute一起使用,您需要将以下内容添加到您的web.config中:
<authentication mode="Windows" /> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> <providers> <clear /> <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> </providers> </roleManager>
然后,在您的控制器或操作方法上,您可以参考Active Directory组,如:
[Authorize(Roles = "YOURDOMAIN\\Group1,YOURDOMAIN\\Group2")]