Как я могу предоставить UX для проверки подлинности с помощью ASP.NET Forms при использовании провайдеров ролей и проверки подлинности Active Directory? - PullRequest
10 голосов
/ 09 апреля 2010

Можно ли использовать этот поставщик ролей AspNetWindowsTokenRoleProvider с аутентификацией ASP.NET FORMS (через этого MembershipProvider System.Web.Security.ActiveDirectoryMembershipProvider)?

Кажется, он работает только с <authentication mode="Windows">, возможно ли использовать его с FORMS?

background - Целью здесь является предоставление ASP.NET Forms UX при использовании Active Directory в качестве внутренней системы аутентификации. Если есть другой, простой способ сделать это с помощью встроенных технологий, это здорово, и я бы тоже хотел об этом услышать.

обновление

Я должен сказать, что у меня работает аутентификация, и я борюсь с тем, чтобы добавить уровень гранулярного контроля (например, роли).

В настоящее время мне нужно настроить соединение Active Directory так, чтобы оно указывало на определенное подразделение в моем домене, что ограничивает доступ физически в этом подразделении только пользователям - что я хотел бы, это указать мое подключение Active Directory ко всему моему домен и ограничить доступ на основе членства в группах (иначе говоря, роли), это работает, если я использую аутентификацию Windows - но я хотел бы получить лучшее из обоих миров, возможно ли это без написания моего собственного RoleProvider?

Ответы [ 3 ]

6 голосов
/ 18 апреля 2010

Как уже упоминалось, вы не можете использовать ActiveDirectoryMembershipProvider с AspNetWindowsTokenRoleProvider. Если вы хотите использовать ADMP с проверкой подлинности с помощью форм, у вас есть несколько вариантов:

  1. Используйте AuthorizationManager он же AzMan. - AzMan встроен в Windows 2003+ и может взаимодействовать с группами Active Directory. Кроме того, в .NET 2.0+ есть AuthorizationStoreRoleProvider, который вы можете использовать для взаимодействия с ним. AzMan работает над задачами, операциями и ролями, в которых, по-видимому, ваше приложение будет закодировано для выполнения определенных задач, которые затем могут быть сгруппированы в операции, и вы сможете создавать роли, обладающие полномочиями для выполнения различных операций. При установке AzMan устанавливается приложение для управления, которое можно использовать для управления задачами, операциями и ролями. Однако у AzMan есть свои недостатки. Во-первых, AuthorizationStoreRoleProvider не распознает Задачи. Скорее, он загружает список Roles со списком операций. Таким образом, если вы не создадите пользовательскую версию провайдера, ваши приложения должны будут искать имена операций вместо имен задач. Во-вторых, с этим взаимодействием, на самом низком уровне, по-прежнему остается необходимость работать через COM. Если вы не хотите, чтобы ваши администраторы использовали инструмент AzMan, вам нужно написать свои собственные страницы для управления операциями, ролями и членством в ролях.

  2. Используйте SqlRoleProvider и сопоставьте роли с именами пользователей. Преимущество этого решения в том, что оно очень просто в реализации. Вы можете в значительной степени использовать его из коробки, поскольку RoleProvider работает с именем пользователя, а не с идентификатором пользователя. В своем коде вы просто проверяете IsInRole, чтобы определить, попал ли данный пользователь в роль, которую распознает ваш код. Существенным недостатком является то, что он ориентирован только на имена пользователей, а не на группы AD, и поэтому у администратора нет средств использовать инструменты AD для управления пользователями. Вместо этого вам нужно написать консоль управления для управления членством в ролях. Кроме того, изменение имени пользователя на уровне AD потребует обновления списка известных имен пользователей вашего приложения.

  3. Напишите (или найдите) пользовательский AD RoleProvider, который учитывает группы AD. Написание собственного поставщика ролей не для слабонервных, но позволяет администраторам управлять членством в ролях с помощью существующих инструментов AD.

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

Реализуйте свой собственный ADAuthorizeAttribute, наследуя от AuthorizeAttribute и переопределяя AuthorizeCore.Это намного проще, чем реализовать собственный поставщик ролей или установить и настроить AzMan.

См. Мой пример здесь: ASP .NET MVC Авторизация форм с группами Active Directory .

0 голосов
/ 14 апреля 2010

Да, вы правы; это будет работать только с аутентификацией Windows Form. Вы можете подтвердить это здесь: http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx

Просто предложение. Попробуйте AuthorizationStoreRoleProvider с AzMan (Диспетчер авторизации). Это сработало для меня (давным-давно, поэтому я мало что помню).

...