当前位置: 首页 > news >正文

罗湖网站建设的公司wordpress头像怎么修改

罗湖网站建设的公司,wordpress头像怎么修改,建筑公司名称大全,建站推广网站排名在前面的两篇文章中#xff0c;我详细的介绍了使用ldap与window AD服务集成#xff0c;实现ToB项目中的身份认证集成方案#xff0c;包括技术方案介绍、环境配置#xff1a; ToB项目身份认证AD集成#xff08;一#xff09;#xff1a;基于目录的用户管理、LDAP和Active…在前面的两篇文章中我详细的介绍了使用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 进行交互提供用户搜索、认证、密码修改、重置等功能。下图是该类的基本结构后续将一步步的介绍如何实现各个方法。 class LdapService {client: Promiseldap.Client;private config: MustPropertyLdapServiceConfig;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.createClient({url: conf.url,tlsOptions: {minVersion: TLSv1.2,rejectUnauthorized: false,},});await promisify(client.bind).call(client, conf.adminDN, conf.adminPassword);return client; // 返回绑定后的客户端}private mergeSearchEntryObjectAttrs(entry: ldap.SearchEntryObject) {}private doSearch(client: ldap.Client, opts: ldap.SearchOptions) {}private encodePassword(password) {}private safeDn(dn: string) {} }二、中文字段的特殊patch ldap.js对于数据的字段进行了escape操作会导致中文输入被转化成\xxx的形式无论是接收的数据还是发送的请求这时候会导致cn包含中文会出现错。需要用如下方法进行patch通过在出现问题的rdn上配置unescaped参数控制是否对字符串进行escape如果不知道啥是escape参见十六进制转义escape介绍 const oldString ldap.RDN.prototype.toString; ldap.RDN.prototype.toString function () {return oldString.call(this, { unescaped: this.unescaped }); };加了这个补丁后就可以控制rdn的转义情况了。 三、用户搜索功能 findUsers() 方法用于在 AD 中搜索用户返回用户的基本信息。 async findUsers(filter this.config.userSearchFilter,attributes: string[] [sAMAccountName, userPrincipalName, memberOf] ): PromiseLdapUserSimInfo[] {await this.bindAsAdmin();const opts {filter, scope: sub, attributes: Array.from(new Set([distinguishedName, cn].concat(attributes))),};const searchResult await this.doSearch(await this.client, opts);return searchResult.map((user) {return this.mergeSearchEntryObjectAttrs(user) as LdapUserSimInfo;}); }filter 是用于搜索的 LDAP 过滤器默认为查找所有用户的 (objectClassuser) 过滤器。attributes 参数允许指定返回哪些用户属性默认返回 sAMAccountName、userPrincipalName 和 memberOf 等属性。该方法调用了 doSearch() 进行搜索并通过 mergeSearchEntryObjectAttrs() 整理和转换 AD 返回的用户数据。 doSearch() 方法是实际进行 LDAP 搜索的地方 private doSearch(client: ldap.Client, opts: ldap.SearchOptions) {return new Promiseldap.SearchEntryObject[]((resolve, reject) {const entries [] as ldap.SearchEntryObject[];client.search(this.config.userSearchBase, opts, (err, res) {if (err) {return reject(err);}res.on(searchEntry, (entry) {entries.push(entry.pojo);});res.on(end, (result) {if (result?.status ! 0) {return reject(new Error(Non-zero status from LDAP search: ${result?.status}));}resolve(entries);});res.on(error, (err) {reject(err);});});}); }client.search() 是 ldapjs 提供的一个方法用于执行搜索操作。搜索结果通过事件 searchEntry 逐条返回最终在 end 事件时完成。 四、用户认证功能 checkPassword() 方法用于用户身份验证检查用户输入的密码是否正确。 async checkPassword(user: LdapUserSimInfo, password: string) {const userDN user.objectName;const client await this.client;await promisify(client.bind).call(client, userDN, password); }通过 LDAP 的 bind() 方法可以尝试使用用户的 DN 和密码进行绑定。如果绑定成功表示密码正确否则会抛出错误表示认证失败。 五、密码修改功能 changePassword() 方法允许用户修改自己的密码。 async changePassword(user: LdapUserSimInfo, newPassword: string, oldPassword: string) {await this.bindAsAdmin();const userDN this.safeDn(user.objectName);const changes [new ldap.Change({operation: delete,modification: new ldap.Attribute({type: unicodePwd,values: [this.encodePassword(oldPassword)],}),}),new ldap.Change({operation: add,modification: new ldap.Attribute({type: unicodePwd,values: [this.encodePassword(newPassword)],}),}),];const client await this.client;await promisify(client.modify).call(client, userDN, changes); }在修改密码时LDAP 需要先删除旧密码再添加新密码。这里使用 ldap.Change 创建修改操作通过 client.modify() 方法应用到 AD。 六、密码重置功能 resetPassword() 方法允许管理员重置用户的密码 async resetPassword(user: LdapUserSimInfo, resetPassword: string) {await this.bindAsAdmin();const client await this.client;const userDN this.safeDn(user.objectName);const changes new ldap.Change({operation: replace,modification: new ldap.Attribute({type: unicodePwd,values: [this.encodePassword(resetPassword)],}),});await promisify(client.modify).call(client, userDN, changes); }与修改密码不同重置密码直接使用 replace 操作替换用户的现有密码。 七、结语 通过对 LdapService 类的逐步解析相信你已经学会了如何利用 ldapjs 库与 Windows AD 进行交互。在实际使用中还可以根据业务需求对这个类进行扩展从而满足大规模企业系统中的用户管理需求。 另外这个中文的问题暂时还只能是如此打补丁期待社区修复可能不会那么及时
http://www.hkea.cn/news/14447847/

相关文章:

  • wordpress怎么做双语站网站域名详解
  • 如何做网站接口logo图片生成器在线制作
  • 珠海专业网站制作平台写作网站哪个好
  • 网站建设培训个人成都网络营销公司排名收费标准
  • 中小企业免费网站建设淮安建设银行招聘网站
  • 麻城网站设计哪里建设网站比较好
  • 佛山免费网站建设平度网站建设公司电话
  • 求职招聘网站排名前十名怎样建免费个人网站
  • 高端网站建设 飞沐有网站制作app要多长时间
  • 西安长安网站建设制作网站后台添加文章后怎么不显示
  • 大型 交友 网站 建设 公司wordpress 水果主题
  • 网站开发可以申请著作权吗wordpress 自带播放器
  • 北京创意设计协会网站自己开发一个网站应该怎么做
  • 公众号如何做网站北京skp
  • 百度电脑版登录网站网页美化与布局教程
  • 怎么做有数据库的网站大连做网站科技有限公司
  • 焦作市建设银行网站企业网站免费建设
  • 浏览器怎么打开网站服务器设置青岛市网站建设公司
  • 建站工具有哪些cmswordpress 黑糖破解
  • 网站建设贰金手指科捷6公司的英文网站
  • 发布网站建设需求的经验花桥网站制作
  • 重庆旅游网站建设公司wordpress建站连接数据库
  • 大良o2o网站建设黄页网推广服务
  • 英文网站建设服务合同模板下载太原做企业网站的
  • android 做分享的网站wordpress能做app
  • 哈尔滨模版网站建设乔拓云建站平台
  • 常州承接网站建设凡科app制作
  • h5和手机网站网站备案 教程
  • 如何建立搜索功能的网站九江哪里做网站
  • 做智能网站软件电商网站开发实训软件