ToB项目身份认证AD集成(完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法介绍

news/2024/10/20 0:41:22/

在前面的两篇文章中,我详细的介绍了使用ldap与window AD服务集成,实现ToB项目中的身份认证集成方案,包括技术方案介绍、环境配置:
ToB项目身份认证AD集成(一):基于目录的用户管理、LDAP和Active Directory简述
ToB项目身份认证AD集成(二):一分钟搞定window server 2003部署AD域服务并支持ssl加密(多图保姆教程+证书脚本)

在本文中,我将详细介绍如何利用 ldapjs 库使之一个 Node.js 服务类 LdapService,该类实现了与 之前搭建的Windows AD 交互,包括用户搜索、身份验证、密码修改等功能。

也算是AD集成系列的完结吧,后续可能出其它客户端的对接,但目前工作核心在AI那块儿,大概率也不会继续了

一、实现方案和LdapService类概述

LdapService 类的核心是通过 LDAP(轻量级目录访问协议)与 AD 进行交互,提供用户搜索、认证、密码修改、重置等功能。下图是该类的基本结构,后续将一步步的介绍如何实现各个方法。

javascript">class LdapService {client: Promise<ldap.Client>;private config: MustProperty<LdapServiceConfig>;constructor(config: LdapServiceConfig) {this.config = {...defaultConfig,...config,};this.client = this.init();}async findUsers(filter = this.config.userSearchFilter,attributes: string[] = ["sAMAccountName", "userPrincipalName", "memberOf"]) {}// 关闭连接async close() {(await this.client).destroy();}async findUser() {}// 修改用户密码的方法async changePassword(user: LdapUserSimInfo,newPassword: string,oldPassword: string) {}// 用户认证的方法 - 检查密码是否正确async checkPassword(user: LdapUserSimInfo, password: string) {}/*重置密码 */async resetPassword(user: LdapUserSimInfo, resetPassword: string) {}private async init() {const conf = this.config;const client = ldap.createClien

http://www.ppmy.cn/news/1540379.html

相关文章

理解C#中空值条件运算符及空值检查简化

前言 .NET 4.6 及以上版本,提供了空值条件运算符 ?. 和 ?[]。这些运算符的引入,为我们提供了一种简明的方式来处理空值的场景、简化空值检查,可避免 NullReferenceExceptions 的异常。本文将探索 C# 的空值检查运算符。 介绍 空值,这里指的是 null。在定义对象后,未对其…

深入了解Vue Router:基本用法、重定向、动态路由与路由守卫的性能优化

文章目录 1. 引言2. Vue Router的基本用法2.1 基本配置 3. 重定向和命名路由的使用3.1 重定向3.2 命名路由 4. 在Vue Router中如何处理动态路由4.1 动态路由的概念4.2 如何处理动态路由4.3 动态路由的懒加载 5. 路由守卫的实现与性能影响5.1 什么是路由守卫&#xff1f;5.2 路由…

2024入门测参考答案(c语言版)

先自己看代码思考&#xff0c;不理解的地方可以截图私聊…… 7-1 祝福祖国&#xff01; 这是一个编程题模板。 2024年即将到来&#xff0c;作为一名大学生&#xff0c;为了表达在新的一年里&#xff0c;对祖国的祝福&#xff0c;请编写程序输出祝福语&#xff1a;在新的一年…

【Linux】进程ID和线程ID在日志中的体现

在分析内核打印日志流程的时候&#xff0c;发现有时候同一个进程函数调用关系比较混乱&#xff08;因为只打印了进程号&#xff09;&#xff0c;现象就是一个函数走着走着不知道走哪里去了。 另一个现象是&#xff0c;在Linux启动Firefox的时候&#xff0c;启了大概80个进程&…

android11 usb摄像头添加多分辨率支持

部分借鉴于&#xff1a;https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率&#xff1a; 3、hal层修改 4、frameworks 5、备…

视频美颜SDK与直播平台的融合:实现实时美颜的技术方案详解

视频美颜SDK作为一种技术解决方案&#xff0c;已经广泛应用于各类直播平台中&#xff0c;实现了实时美颜效果的优化。那么&#xff0c;视频美颜SDK是如何与直播平台融合&#xff0c;打造高效的实时美颜效果的&#xff1f;本文将对此技术方案进行详细解析。 一、视频美颜SDK的核…

滚雪球学Redis[6.2讲]:Redis脚本与Lua:深入掌握Redis中的高效编程技巧

全文目录&#xff1a; &#x1f4dd;前言&#x1f6a6;正文&#x1f31f;6.2.1 Lua脚本的优势&#x1f58b;️6.2.2 EVAL命令与Lua脚本编写&#x1f435;编写Lua脚本的基本步骤&#x1f436;示例&#xff1a;简单的GET和SET操作&#x1f431;示例&#xff1a;Lua实现自增和过期…

FFMPEG录屏(19)--- 枚举Windows下的屏幕列表,并获取名称、缩略图

在Windows下枚举显示器列表并获取名称、缩略图 在Windows系统中&#xff0c;枚举显示器列表并获取它们的名称和缩略图是一个常见的需求。本文将详细介绍如何实现这一功能&#xff0c;涉及到的主要技术包括Windows API和C编程。 获取显示器信息 首先&#xff0c;我们需要一个…