.net core在Linux下获取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));elseloginDN = $"{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

.net core在Linux下获取AD域信息相关推荐

  1. Linux下获取xml调试信息等级

    Linux下获取XML调试信息等级 #ifndef _LOG_H_ #define _LOG_H_#include <stdio.h> #include <string.h> ...

  2. Linux下获取详细硬件信息的工具:Dmidecode命令详解

    Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息.Dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS.系统.主板.处理器.内存.缓存等等.偶 ...

  3. 汇总 Linux下获取详细硬件信息的工具:Dmidecode命令详解

    Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息.Dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS.系统.主板.处理器.内存.缓存等等.偶 ...

  4. Linux下获取设备IPMI信息常用工具

    1.asu (1)概述 asu是IBM官方提供的一个命令行工具,全称IBM Advanced Settings Utility,可以对IMM进行操作. (2)安装 从官网上下载asu对应的RPM安装包 ...

  5. linux 读取 gateway ip socket,linux下获取本地IP信息(没看代码)

    #include #include #include #include //#include #include //#include #include #include #include #inclu ...

  6. Linux下获取WIFI状态信息(c语言)

    编译时需要 -lwpa_client wifi.h #ifndef __WIFI_H__ #define __WIFI_H__int wifi_run_cmd(char *cmd, char *res ...

  7. u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小

    /* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...

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

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  9. 什么是core dump linux下用core和gdb查询出现段错误的地方

    什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-31932 ...

最新文章

  1. 【杭电ACM】1097 A hard puzzle
  2. 让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN
  3. SAP根据用户名查姓名
  4. python调用支付宝支付接口详细示例—附带Django demo代码
  5. python最新排名_最新编程语言排名:JS位列第一 Python超Java
  6. 那些曾经拥有的最大快乐,都是好奇心的结果
  7. mysql日志管理_关于MySQL的日志管理(binlog)
  8. 2014 网选 5014 Number Sequence(异或)
  9. 华为python有必要学吗_【华为云技术分享】这个 Python 库有必要好好学学
  10. C语言对stm32f103程序,STM32F103WIFI程序C语言
  11. 最简易上手的numpy学习笔记四
  12. MySQL 处理重复数据
  13. android电视怎么升级失败,智能电视升级失败,原因都在这里!
  14. MapReduce之OutputFormat理解
  15. Unity中设置Transform的forward/up/right旋转异常问题
  16. 开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)
  17. python网络数据采集 第二版_Python网络数据采集 第2版(Python Web Scraping 2017) 完整pdf原版...
  18. lisp全部文本改宋体字型_如何将CAD里面的文字一下全改成宋体 CAD2014中如何将图...
  19. 关于高速光耦6n137的使用总结_高速光耦6n137典型应用电路图汇总(多谐振荡/光电隔离器/光耦开关) - 全文...
  20. 计算机基础知识第三章答案,2011年河北省职称计算机模拟习题(基础知识第三章+标准答案)...

热门文章

  1. 用 as with ,和 ROW_NUMBER() 做分页查询
  2. silverlight Balder 动态材质(用网上的图片)
  3. 合成谬误与公地悲剧(为何设置产品总监职位及核算名义成本)
  4. 【Scala】Scala中的_ 和 _*分别代表什么
  5. 03-03 APP 控件定位
  6. c++用一级运算比较大小_Python 学习笔记:Python 中的数字和数字型运算
  7. 程序员1年经验包装成5年,转正时领导:试用期不想过了?
  8. 泛型:了解泛型与通配符
  9. ERROR 1064 (42000): ; check the manual that corresponds to y
  10. 查看php 加载.dll,无法加载PHP_OCI8.DLL的解决