iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang怎么连接Ldap
  • 549
分享到

Golang怎么连接Ldap

2023-06-15 07:06:33 549人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关golang怎么连接Ldap,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天在这里写一些Golang怎么连接ldapgolang的ldap包有一些,我使用的是go 

这篇文章将为大家详细讲解有关golang怎么连接Ldap,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

今天在这里写一些Golang怎么连接ldap

golang的ldap包有一些,我使用的是

go get -u "gopkg.in/ldap.v2"

我的ldap环境:

rootdn:  uid=admin,dc=wjq,dc=com     passWord: openldap

dn: dc=wjq,dc=comdc: wjqobjectClass: topobjectClass: domaindn: ou=Group,dc=wjq,dc=comou: GroupobjectClass: topobjectClass: organizationalUnitdn: ou=People,dc=wjq,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: uid=admin,dc=wjq,dc=comuid: adminobjectClass: topobjectClass: account

一个组和一个用户:

#组信息dn: cn=test,ou=Group,dc=wjq,dc=comgidNumber: 1003cn: testobjectClass: posixGroup#用户信息dn: uid=test,ou=People,dc=wjq,dc=comuidNumber: 1009gidNumber: 1003gecos: testhomeDirectory: /home/testuid: testshadowMin: 0shadowMax: 99999shadowWarning: 7loginshell: /bin/bashshadowInactive: -1shadowExpire: -1shadowFlag: -1objectClass: posixAccountobjectClass: shadowAccountobjectClass: accountcn: testuserPassword:: e1NTSEF9d053TWhYRTR4STJUUmpJWm5MTkF4VFlBTFhJdStaZ0Q=shadowLastChange: 17858

golang处理步骤如下:

 ldap.Dail             #这一步是底层的连接上

ldap.Bind             #类似于用户名密码认证

操作  比如  查询,删除,增加用户

第一步: Dail

Dail有两个参数 network,  address, 返回 (*Conn,  error)

network: 是指网络协议  tcp,  udp

address:  是底层要连接的地址,需要带端口号

con, err := ldap.Dial("tcp", "127.0.0.1:389")

第二步: 认证

Bind(rootdn, password)  (error)

berror := conn.Bind("uid=admin,dc=wjq,dc=com", "openldap")

第三步: 操作;

操作很有特点,我觉得也许是golang语言的特点,比如

查询,  ldap提供一个查询的结构体 --  ldap.NewSearchRequest,   只要我们把数据填充进去,然后调用ldap.Search

添加,    ldap提供一个添加的结构体  -- ldap.NewAddRequest,   填充好数据,  然后调用 ldap.Add

删除,   ldap提供删除结构体  -- ldap. NewDelRequest,       然后调用ldap.Del

用户密码修改, ldap提供修改用户密码的结构体  -- ldap.NewPasswordModifyRequest , 然后调用ldap.PasswordModify

这个非常有特点,来看看:

查询用户组NewSearchRequest:

func NewSearchRequest(    BaseDN string,    Scope, DerefAliases, SizeLimit, TimeLimit int,    TypesOnly bool,    Filter string,    Attributes []string,    Controls []Control,) *SearchRequest

BaseDN: 根据我的ldap环境应该是   ou=Group,dc=wjq,dc=com

scope:  我理解的是查询的范围,ldap是一个目录树,我一般设置 ldap.ScopeWholeSubtree

DerefAiases: 在搜索中别名(cn, ou)是否废弃,设置:   ldap.NeverDerefAliases

SizeLimit: 大小设置,一般设置为0

TimeLimit: 时间设置,一般设置为0

TypesOnly:  设置false(好像返回的值要多一点)

Controls:  是控制我没怎么用过,一般设置nil

这些我也没理解透详细可以参考: https://tools.ietf.org/html/rfc4511

查询中主要的两个参数 Filter, Attributes

Filter 是过滤条件

Attributes 返回的属性值

建立SearchRequest结构体:

srsql := ldap.NewSearchRequest("ou=Group,dc=wjq,dc=com",                       ldap.ScopeWholeSubtree,                        ldap.NeverDerefAliases,                       0,                       0,                       false,                     "(&(objectClass=posixGroup))",                      []string{"dn", "cn", "uid"},  nil)

Filter:  (&objectClass=posixGroup)) 查找所有group,返回每个组的dn, cn, uid

过滤test用户组:  (&(objectClass=posixGroup)(cn=test))

过滤用户cn=test,或者uid=test(当然baseDn是用户的):  "(|(&(objectClass=posixAccount)(cn=test))(&(objectClass=posixAccount)(uid=test)))"

执行Search并且获取结果(在cur.Entries中):

cur, er := l.Search(srsql)if er != nil {log.Fatalln(er)}if (len(cur.Entries) > 0){for _, item := range cur.Entries {cn := item.GetAttributeValue("cn")if cn == "" {cn = item.GetAttributeValue("uid")}fmt.Println(cn)}}

以上就是Search的步骤。

在来看看添加用户: NewAddRequest

添加

用户:  wujq

password: 123456

家目录: /home/wujq

所属的组:  test  (id=1003)

首先确认我需要添加的用户dn:  uid=wujq,ou=People,dc=wjq,dc=com

 gidNumber 是 1003

因为需要uidNumber值,假设我设置为1010(系统没有使用)

执行代码如下:

sql := ldap.NewAddRequest("uid=wujq,ou=People,dc=wjq,dc=com")sql.Attribute("uidNumber", []string{"1010"})sql.Attribute("gidNumber", []string{"1003"})sql.Attribute("userPassword", []string{"123456"})sql.Attribute("homeDirectory", []string{"/home/wujq"})sql.Attribute("cn", []string{"wujq"})sql.Attribute("uid", []string{"wujq"})sql.Attribute("objectClass", []string{"shadowAccount", "posixAccount", "account"})er := ldapcon.Add(sql)

关于“Golang怎么连接Ldap”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Golang怎么连接Ldap

本文链接: https://www.lsjlt.com/news/278593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang怎么连接Ldap
    这篇文章将为大家详细讲解有关Golang怎么连接Ldap,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天在这里写一些Golang怎么连接ldapgolang的ldap包有一些,我使用的是go ...
    99+
    2023-06-15
  • golang怎么连接kafka
    这篇文章主要介绍“golang怎么连接kafka”,在日常操作中,相信很多人在golang怎么连接kafka问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang怎么连接kafka”的疑惑有所帮助!接下来...
    99+
    2023-07-06
  • golang怎么连接sqlx库
    这篇“golang怎么连接sqlx库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“golang怎么连接sqlx库”文章吧。s...
    99+
    2023-06-30
  • golang怎么连接mysql数据库
    今天小编给大家分享一下golang怎么连接mysql数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。golang操作my...
    99+
    2023-06-30
  • 怎么使用Golang实现SSH连接
    本篇内容主要讲解“怎么使用Golang实现SSH连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Golang实现SSH连接”吧!安装Go语言首先,您需要安装最新版本的Golang。建议...
    99+
    2023-07-06
  • golang数据库连接池怎么设置好
    要设置好Go语言的数据库连接池,可以按照以下步骤进行操作: 导入数据库驱动包:首先需要导入适用于Go语言的数据库驱动包,如`da...
    99+
    2023-10-27
    golang 数据库
  • 怎么在golang中利用ssh连接服务器
    这篇文章将为大家详细讲解有关怎么在golang中利用ssh连接服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 发送指令执行 session.Run()package main...
    99+
    2023-06-15
  • golang结合mysql怎么设置最大连接数和最大空闲连接数
    本文小编为大家详细介绍“golang结合mysql怎么设置最大连接数和最大空闲连接数”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang结合mysql怎么设置最大连接数和最大空闲连接数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-29
  • MySQL左连接、右连接、内连接与Hash连接怎么实现
    这篇“MySQL左连接、右连接、内连接与Hash连接怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们...
    99+
    2022-11-30
    mysql hash
  • 如何为 Golang 数据库连接配置连接池?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • centos怎么配置ldap登陆
    要在CentOS上配置LDAP登录,需要按照以下步骤进行操作:1. 安装LDAP客户端工具:在终端中输入以下命令进行安装```sud...
    99+
    2023-08-28
    centos
  • javascript怎么连接
    JavaScript是一种脚本语言,它可以被用于网页前端开发、Web应用程序和服务器端开发。作为一种高级的编程语言,它有很多重要和实用的特性。其中之一就是连接其他的软件和服务。在本文中,我们将深入探讨JavaScript怎么连接其他软件和服...
    99+
    2023-05-14
  • cmccedu怎么连接
    cmccedu连接方法:1、打开电脑,在CMCCEDU覆盖范围内连接;2、提示有限的访问权限;3、打开“网络和共享中心”,点击打开无线网络属性,点击ipv4;4、选择自动获取IP即可连接。CMCC-EDU是移动公司和校园合作的移动的CMCC...
    99+
    2023-07-10
  • 从 golang 连接到 rethinkDB 时出错
    php小编百草在使用golang连接到rethinkDB时遇到了问题。无法连接到rethinkDB服务器的错误提示让他困惑不已。针对这个问题,他进行了一系列的排查和调试,并最终找到了解...
    99+
    2024-02-12
  • golang连接kafka的示例代码
    目录1 下载,配置,启动 kafka配置修改启动kafka2 使用golang的github.com/Shopify/sarama库连接kafka3 确认生产者发送成功1 下载,配置...
    99+
    2023-05-16
    golang连接kafka golang kafka连接
  • 使用Golang连接FTPS服务器
    php小编西瓜今天为大家介绍如何使用Golang连接FTPS服务器。Golang是一种快速、高效的编程语言,而FTPS则是一种安全的文件传输协议。通过结合这两者,我们可以实现安全可靠的...
    99+
    2024-02-13
  • golang rabbitmq集群连接的方法是什么
    要连接到 RabbitMQ 集群,可以使用以下方法: 使用 RabbitMQ 的 Go 客户端库(例如,github.com/st...
    99+
    2023-10-21
    golang rabbitmq
  • Golang如何连接MySQL数据库
    本篇内容主要讲解“Golang如何连接MySQL数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang如何连接MySQL数据库”吧!Go原生就支持连接...
    99+
    2024-04-02
  • PostgreSQL怎么连接JAVA接口
    本篇文章为大家展示了PostgreSQL怎么连接JAVA接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。安装在我们开始之前,我们需要在Java程序中使用PostgreSQL,确保PostgreSQ...
    99+
    2023-06-17
  • 电脑连接云服务器怎么连接
    如果您使用的是Windows Server系统的虚拟化技术(Virtualization),您可以使用以下命令创建连接: 启动虚拟化服务器(VM)控制面板(VMM Control Menus) 双击我的电脑(HOME)或开始菜单(Win...
    99+
    2023-10-26
    服务器 电脑
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作