Могу ли я использовать проверку подлинности с помощью форм для авторизации против групп AD? - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь авторизовать пользователей для Active Directory в моем веб-приложении ASP .NET MVC3.Я не только хочу заставить пользователя войти в систему и авторизовать это для пользователей в каталоге, но я также хочу авторизовать пользователей для групп, в которых они находятся, в соответствии с этим:

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

КаждыйПример, который я вижу, делает это для аутентификации Windows.Я использую проверку подлинности с помощью форм.Важными частями моего 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.

Возможно ли это сделать с помощью проверки подлинности с помощью форм и как настроить приложение?

1 Ответ

1 голос
/ 16 сентября 2011

Судя по моим исследованиям, ответ - нет, вы не можете использовать проверку подлинности с помощью форм с помощью WindowsTokenRoleProvider. Смотрите здесь:

Как предоставить UX для проверки подлинности с помощью ASP.NET Forms при использовании поставщиков ролей и проверки подлинности Active Directory?

Вместо этого я сделал то, что сделал в ASP .NET MVC 2, для реализации собственной AuthorizeAttribute:

ASP .NET MVC Авторизация форм с группами Active Directory

...