wpf - 通过成员资格提供程序在断开连接的WPF应用程序中验证和获取Active Directory用户的角色

标签 wpf active-directory roles membership-provider

我有一个项目要求,需要在远程/断开连接的WPF应用程序中根据ActiveDirectory进行身份验证。

可能有几种方法可以尝试执行此操作,但是使用ActiveDirectory的MembershipProvider的最佳方法是什么?

我需要:

  • 验证用户是否存在。
  • 获取AD用户的组和角色。

  • 这需要从Active Directory所在的网络外部的远程位置进行。

    最佳答案

    现在,在WinForms或WPF应用程序中,您可以利用“Client Application Services”(感谢MS提供非常通用的名称,现在寻求帮助非常痛苦!)。

    这使您可以连接到可以验证登录名的WCF服务。上面的链接提供了一个演练,显示了使所有功能正常运行的容易程度,一旦您拥有可运行的应用程序,就可以修改配置以指向其他MembershipProvider和/或RoleProvider。

    值得注意的是,现成的解决方案包括一个名为ActiveDirectoryMembershipProvider的MembershipProvider,但没有Active Directory的RoleProvider。

    如果确实需要获得角色(或组)的能力,并且您正在使用.NET 4.0,则可以利用新添加的Active Directory API来简化一切,即System.DirectoryServices.AccountManagement。对于最基本的Membership and Role服务,您将需要以下内容来创建自己的基本MembershipProvider和RoleProvider:

  • MembershipProvider.ValidateUser()-应该使用PrincipalContext.ValidateCredentials()
  • RoleProvider.GetAllRoles()-使用新的GroupPrincipal()作为新PrincipalSearcher()的源
  • RoleProvider.IsUserInrole()-使用UserPrincipalFindByIdentity()方法来获取用户,请使用GroupPrincipalFindByIdentity()来获取组,然后在用户上使用IsMemberOf()方法来查看他们是否是该组的成员。

  • 您可以根据需要实现尽可能少的API,您应该在新的AccountManagement命名空间中找到所需的一切来完成此操作。

    关于wpf - 通过成员资格提供程序在断开连接的WPF应用程序中验证和获取Active Directory用户的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324752/

    相关文章:

    c# - 我的命令触发后如何使用 MVVM 清除我的文本框

    active-directory - 一般来说,对于 Active Directory,大多数公司使用什么作为人员的唯一标识符?

    c# - 将 Active Directory 与用于 SPA 的 Web API 结合使用

    asp.net-mvc-4 - ASP.NET MVC 授权角色,具有来自 View 的 HasAccesss

    active-directory - Active Directory 组和 Exchange 中的组之间有什么关系(如果有)?

    asp.net-mvc - 如何限制对 ASP.NET MVC 中某些页面的访问?

    WPF OnPropertyChanged 重复代码

    wpf - 如何在Powershell的xaml中使用相对路径

    wpf - WPF多语言GUI即时切换

    node.js - Electron + Vue + msal-nodejs + Azure 广告 : redirect URL issue