当前位置:  开发笔记 > 编程语言 > 正文

通过MembershipProvider在断开连接的WPF应用程序中验证ActiveDirectory用户和GetRoles

如何解决《通过MembershipProvider在断开连接的WPF应用程序中验证ActiveDirectory用户和GetRoles》经验,为你挑选了1个好方法。

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

可能有几种方法可以尝试这样做,但使用ActiveDirectory的MembershipProvider的最佳方法是什么?

我需要:

    验证用户是否存在.

    获取AD用户的组和角色.

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



1> Timothy Walt..:

从WinForms或WPF应用程序中,您现在可以利用" 客户端应用程序服务 "(感谢MS提供一个非常通用的名称,现在寻找帮助非常痛苦!).

这允许您连接到可以验证登录的WCF服务.上面的链接有一个演练,显示了让它全部工作是多么容易,一旦你有一个工作的应用程序,你可以修改你的配置指向不同的MembershipProvider和/或RoleProvider.

值得注意的是,开箱即用的解决方案包括名为ActiveDirectoryMembershipProvider的MembershipProvider ,但Active Directory没有RoleProvider.

如果您确实需要能够获取角色(或组)并且您正在使用.NET 4.0,那么您可以利用添加的新Active Directory API使一切变得更加容易,即System.DirectoryServices.AccountManagement.对于最基本的成员资格和角色服务,您需要具备以下内容来创建自己的基本MembershipProvider和RoleProvider:

MembershipProvider.ValidateUser() - 应该使用PrincipalContext.ValidateCredentials()

RoleProvider.GetAllRoles() - 使用新的GroupPrincipal()作为新PrincipalSearcher()的源

RoleProvider.IsUserInrole() - 使用UserPrincipal.FindByIdentity()方法获取用户,使用GroupPrincipal.FindByIdentity()获取组,然后使用用户的IsMemberOf()方法查看他们是否是该组的成员.

您可以根据需要实现少量或多少API,您应该在新的AccountManagement命名空间中找到所需的一切来执行此操作.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有