如何通过LDAPS判断当前Windows用户是否属于Active Directory组?
使用LDAPS验证当前Windows用户是否属于AD组(无需重复输入凭据)
完全可行,我们可以利用当前Windows登录用户的身份上下文,通过LDAPS协议查询Active Directory,不需要用户重复输入账号密码。具体实现如下:
必要准备
- 确保项目引用了
System.DirectoryServices.AccountManagement程序集 - 确认目标AD服务器已配置LDAPS支持(部署有效SSL证书,开放636端口)
实现代码
using System.DirectoryServices.AccountManagement; public bool CheckUserInAdGroup(string targetGroupName) { // 初始化LDAPS上下文,自动复用当前用户凭据 using (var adContext = new PrincipalContext( ContextType.Domain, "your-domain-name.com", null, ContextOptions.Negotiate | ContextOptions.SecureSocketLayer)) { // 获取当前登录的Windows用户对象 using (var currentUser = UserPrincipal.Current) { if (currentUser == null) return false; // 查找目标AD组 using (var targetGroup = GroupPrincipal.FindByIdentity(adContext, targetGroupName)) { if (targetGroup == null) return false; // 检查用户是否属于该组(包含嵌套组成员关系) return currentUser.IsMemberOf(targetGroup); } } } }
关键说明
ContextOptions.SecureSocketLayer指定使用LDAPS协议,默认连接636端口ContextOptions.Negotiate会自动使用当前Windows用户的身份凭据,无需额外输入账号密码IsMemberOf方法会递归检查嵌套组的成员关系,如果只需要验证直接成员,可以遍历currentUser.GetGroups()进行对比- 替换
your-domain-name.com为实际的AD域名
内容的提问来源于stack exchange,提问作者Thierry
相关产品推荐
相关产品推荐

