.net core获取AD域信息

.h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑", "宋体", "黑体", Arial; margin-bottom: 5px; padding-left: 15px }
h3 { background-color: #f5f5f5; border-left: 13px solid #6fa833; color: #6fa833; padding: 5px; margin: 15px auto 2px }
p { margin: 10px auto; text-indent: 0 }
code { background-color: #f5f5f5 !important; border: 1px solid #ccc !important; display: inline-block; font-family: "Courier New", sans-serif !important; font-size: 12px !important; height: 20px; line-height: 1.8; margin: 0 5px; padding: 0 5px !important; vertical-align: middle }

.net core获取AD域信息

.net Core 2.1.4

.net core现在System.DirectoryServices只支持Windows平台下使用。

参考:

https://github.com/dotnet/standard/pull/444

https://github.com/dotnet/corefx/issues/2089

private Dictionary<string,string> AuthenticateActiveDirectory(string username, string password)
{
    Dictionary<string, string> dic = new Dictionary<string, string>();
    DirectoryEntry entry = new DirectoryEntry(_appConfiguration["LDAP:DE"], username, password);
    try
    {
        DirectorySearcher search = new DirectorySearcher(entry);
        search.Filter = $"(SAMAccountName={username})";
        SearchResult result = search.FindOne();
        if (result != null)
        {
            dic.Add("state","true");
            dic.Add("displayname", result.Properties["displayname"]?[0].ToString());
            dic.Add("mail",result.Properties["mail"]?[0].ToString());
        }
    }
    catch (Exception ex)
    {
        dic.Add("state", "false");
        dic.Add("errMsg",ex.Message);
    }
    return dic;
}

Novell.Directory.Ldap

Novell.Directory.Ldap支持.net core2 Linux环境。

public Dictionary<string, string> LdapAuthenticate(string username, string password)
{
    Dictionary<string, string> dic = new Dictionary<string, string>();
    var ldapHost = _appConfiguration["LDAP:Host"];
    var ldapPort = _appConfiguration.GetValue<int>("LDAP:Port");
    var mailSuffix = _appConfiguration["LDAP:MailSuffix"];
    var searchBase = _appConfiguration["LDAP:SearchBase"];
    var loginDN = username;
    var sAMAccountName = username;
    if (username.Contains(mailSuffix))
        sAMAccountName = username.Substring(0, username.IndexOf(mailSuffix));
    else
        loginDN = $"{username}{mailSuffix}";

    var searchFilter = $"(sAMAccountName={sAMAccountName})";
    var attrs = _appConfiguration["LDAP:Attrs"].Split(‘|‘);
    try
    {
        var conn = new LdapConnection();
        conn.Connect(ldapHost, ldapPort);
        conn.Bind(loginDN, password);
        var lsc = conn.Search(searchBase, LdapConnection.SCOPE_SUB, searchFilter, attrs, false);

        while (lsc.hasMore())
        {
            LdapEntry nextEntry = null;
            try
            {
                nextEntry = lsc.next();
            }
            catch (LdapException ex)
            {
                Logger.Debug(ex.ToString(), ex);
                continue;
            }
            var attributeSet = nextEntry.getAttributeSet();
            var ienum = attributeSet.GetEnumerator();
            while (ienum.MoveNext())
            {
                var attribute = (LdapAttribute)ienum.Current;
                var attributeName = attribute.Name.ToLower();
                var attributeVal = attribute.StringValue;
                if (attrs.Contains(attributeName))
                {
                    dic.Add(attributeName, attributeVal);
                }
            }
            dic.Add("state", "true");
        }

        conn.Disconnect();
    }
    catch (Exception ex)
    {
        dic.Add("state", "false");
        dic.Add("errMsg", ex.Message);
        Logger.Debug(ex.ToString(), ex);
    }
    return dic;
}

以上配置信息如下:

  "LDAP": {
    "_comment": "域帐号登录配置",
    "DE": "LDAP://xxx.com",
    "Host": "xx.xx.xx.xx",
    "Port": 389,
    "MailSuffix": "@xxx.com",
    "Attrs": "displayname|mail|sn",
    "SearchBase": "DC=xxx,DC=com",
    "UserRole": "User"
  },

原文地址:https://www.cnblogs.com/ddrsql/p/8516226.html

时间: 2024-10-28 23:18:25

.net core获取AD域信息的相关文章

C#获取AD域中计算机和用户的信息

如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息. 所用程序集,需要.Net Framework 4. 添加程序集引用 System.DirectoryServices.AccountManagement 获取AD域名称,未加入AD域的,只能获取计算机名称. 如果未加入任何域,则后续的获取域用户.计算机等操作将无法进行,实例化域上下文对象时,会抛出异常. 1 IPGlobalProperties ipGlobalProperties = IPGlobalPropertie

java以及C#获取AD域上用户信息

JAVA /** *  JAVA 读取AD用户信息 *  aa00a00 */package com.wanda.sso.client.servlet; import java.util.Hashtable; import javax.naming.Context;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.directory.Attribute;imp

JAVA 通过LDAP获取AD域用户及组织信息

因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的AD域组织和用户信息,实现域认证和单点登录. LDAP: LDAP是轻量目录访问协议 AD域:微软基于域模式的集中化管理 1.常规的AD域登陆验证 LdapContext dc = null;             Hashtable<String, String> env = new Hasht

Java使用LdAP获取AD域用户

随着我们的习大大上台后,国家在网络信息安全方面就有了很明显的改变!所以现在好多做网络信息安全产品的公司和需要网络信息安全的公司都会提到用AD域服务器来验证,这里就简单的研究了一下! 先简单的讲讲AD域和LdAP目录访问协议:AD(active directory)活动目录,动态的建立整个域模式网络中的对象的数据库或索引,协议为LDAP,安装了AD的服务器称为DC域控制器,存储整个域的对象的信息并周期性更新!其中的对象分为三大类--资源(如印表机).服务(如电子邮件).和人物(即帐户或用户,以及组

AD 域服务简介(二)- Java 获取 AD 域用户

博客地址:http://www.moonxy.com 一.前言 先简单简单回顾上一篇博文中关于 AD 域和 LDAP目录访问协议的基本概念. AD(Active Directory)活动目录,动态的建立整个域模式网络中的对象的数据库或索引,使用的协议为 LDAP,安装了AD 的服务器称为 DC 域控制器,存储整个域的对象的信息并周期性更新,其中的对象分为三大类:资源(如印表机).服务(如电子邮件).和用户(即帐户或用户,以及组). 通常大家都会将 LDAP 与关系数据库相比,认为 LDAP 是另

c#获取AD账户信息

1.获取连接语句 2.获取相关信息 3.搜索信息 3.遍历信息 注意:遍历的电脑必须加入域环境 IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); string doname = ipGlobalProperties.DomainName; PrincipalContext principalContext = new PrincipalContext(ContextType.Do

AD域信息查询工具

问题 在.NET中, 我们可以使用DirectoryEntry跟DirectorySearcher来直接对AD进行查询等操作. 但大家都是开发人员, 有时候对LDAP书写格式等不是很了解, 毕竟不是专业人士. 那么是不是有啥小工具来帮助我们呢? 解决方案 我们可以使用"Active Directory Explorer"这个小工具来查看或者编辑一些信息. 有需要的同学可以点击链接查看具体内容. enjoy SharePoint

C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

Windows Server 2008 R2 配置AD(Active Directory)域控制器 目录 配置环境 配置DNS服务器 配置Active Directory 域服务 C# AD(Active Directory)域同步 组织单位.用户等信息查询 PDF下载 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型:       64 位操作系统 配置DNS服务器 这一步不是必须的,在安装Active D

AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户,请参阅:AD 域服务简介(二)- Java 获取 AD 域用户 一.前言 在日常的开发中,为了实现单点登录,需要对域用户进行增删改查操作,以维持最新的用户信息,确保系统的安全. 二.Java 对 AD 域用户的增删改查操作 package com.moonxy.ad; import java.uti