Проверка подлинности и получение ролей пользователей ActiveDirectory в отключенном приложении WPF через MembershipProvider

У меня есть требование к проекту, в котором мне нужно пройти аутентификацию в ActiveDirectory в удаленном / отключенном приложении WPF.

Вероятно, есть несколько способов сделать это, но какой подход лучше всего использовать ActiveDirectory MembershipProvider?

Мне нужно:

  1. Подтвердите, что пользователь существует.
  2. получить группы и роли пользователей AD.

Это должно происходить из удаленного места, вне сети, в которой находится Active Directory.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
8 265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь из приложения WinForms или WPF вы можете воспользоваться преимуществом «Службы клиентских приложений» (спасибо MS за очень общее имя, поиск помощи теперь очень болезненный!).

Это позволяет вам подключиться к службе WCF, которая может проверять логины. По приведенной выше ссылке показано пошаговое руководство, которое показывает, насколько легко заставить все это работать. Когда у вас есть работающее приложение, вы можете изменить свою конфигурацию, чтобы указать на другой MembershipProvider и / или RoleProvider.

Стоит отметить, что готовое решение включает MembershipProvider с именем ActiveDirectoryMembershipProvider, но для Active Directory нет RoleProvider.

Если вам действительно нужна возможность получать роли (или группы) и вы работаете с .NET 4.0, вы можете воспользоваться преимуществами добавленного нового API Active Directory, который упрощает все, а именно System.DirectoryServices.AccountManagement. Для базовых сервисов членства и ролей вам понадобится следующее, чтобы создать свои собственные базовые MembershipProvider и RoleProvider:

  • MembershipProvider.ValidateUser () - следует использовать PrincipalContext.ValidateCredentials ()
  • RoleProvider.GetAllRoles () - использовать новый GroupPrincipal () в качестве источника для нового PrincipalSearcher ()
  • RoleProvider.IsUserInrole () - используйте метод UserPrincipal.FindByIdentity (), чтобы получить пользователя, используйте Группа.FindByIdentity (), чтобы получить группу, затем используйте метод IsMemberOf () для пользователя, чтобы узнать, являются ли они членами группы.

Вы можете реализовать столько API, сколько необходимо, вы должны найти все необходимое в новом пространстве имен AccountManagement для этого.

Другие вопросы по теме