我可以使用表单身份验证来对AD组进行授权吗?

时间:2011-09-15 07:43:14

标签: .net asp.net-mvc asp.net-mvc-3 active-directory web-config

我正在尝试在ASP .NET MVC3 Web应用程序中针对Active Directory授权用户。我不仅要强制用户登录并针对目录中的用户进行授权,而且我还希望针对他们所在的组授权用户,如下所示:

[Authorize(Roles = @"DOMAIN\Group")]

我看到的每个示例都用于Windows身份验证。我正在使用Forms身份验证。我的Web.config的重要部分如下:

<add name="ADConnectionString" connectionString="LDAP://blahblahblah" />

<authentication mode="Forms">
  <forms name="AD" loginUrl="~/Account/LogOn" />
</authentication>

<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear />
    <add name="ADMembershipProvider" 
         type="System.Web.Security.ActiveDirectoryMembershipProvider" 
         connectionStringName="ADConnectionString"
         attributeMapUsername="sAMAccountName" />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
  <providers>
    <clear />
    <add name="AspNetWindowsTokenRoleProvider"
         type="System.Web.Security.WindowsTokenRoleProvider"
    />
  </providers>
</roleManager>

我目前收到的错误是

  仅当用户名参数与用户匹配时,才支持

方法   当前Windows标识中的名称。

是否可以使用Forms身份验证执行此操作以及如何配置我的应用程序?

1 个答案:

答案 0 :(得分:1)

根据我的研究,似乎答案是否定的,你不能使用WindowsTokenRoleProvider的Forms身份验证。见这里:

How can I provide an ASP.NET Forms Authentication UX while using Active Directory Role and Authentication providers?

相反,我已经完成了我在ASP .NET MVC 2中所做的工作,即实现我自己的AuthorizeAttribute

ASP .NET MVC Forms authorization with Active Directory groups