Go语言连接Ldap

首先下载第三方库到beego的github.com里(具体连接方法可查看单元测试文件),https://github.com/mavricknz/ldap

具体Ldap与AD的参数如下图:

输入图片说明

输入图片说明

输入图片说明

代码如下:

package controllers


import (

    "fmt"
    "github.com/astaxie/beego"
    "github.com/mavricknz/ldap"


)



type MainController struct {

    beego.Controller



}



// 默认方法
func (c *MainController) Get() {

    // 连接LDAP
    l, err := Connect_LDAP()

    if err != nil {

        fmt.Println("错误是", err)

        c.Ctx.WriteString("连接LDAP失败")

        return
    }


    // 查询LDAP
    result, err := Search_LDAP(l)

    if err != nil {

        fmt.Println("错误是", err)

        c.Ctx.WriteString("查询LDAP失败")

        return
    }


    // 显示模板
    c.Data["name"] = result

    c.TplNames = "index.tpl"


}



/*
* 连接LDAP目录数据库
*/
func Connect_LDAP() (l *ldap.LDAPConnection, err error) {

    // 连接参数
    var ldap_server string = "localhost"
    var ldap_port uint16 = 389

    // 开始连接
    fmt.Println("连接LDAP 开始...")

    l = ldap.NewLDAPConnection(ldap_server, ldap_port)

    error := l.Connect()

    if error != nil {

        return nil, error
    }

    fmt.Println("连接LDAP 结束...")


    // 返回参数
    return l, nil


}



/*
* 查询LDAP目录数据库
*/
func Search_LDAP(l *ldap.LDAPConnection) (res string, err error) {

    // 查询参数
    var base_dn string = "dc=micmiu,dc=com"
    var filter = "(cn=*)"

    // 查询配置
    search_request := ldap.NewSearchRequest(

        base_dn,

        ldap.ScopeWholeSubtree, ldap.DerefAlways, 0, 0, false,

        filter,

        nil,

        nil)


    // 开始查询
    sr, error := l.Search(search_request)

    if error != nil {

        return "", error
    }

    defer l.Close()


    // 数据转换成Map
    m := make(map[string]string)

    for _, v := range sr.Entries[0].Attributes {

        m[v.Name] = v.Values[0]

    }


    // 返回参数
    return m["mail"], nil


}

期间遇到的问题:ldap_bind: Invalid credentials (49)

在代码绑定的时候遇到 49 错误:是因为绑定的账号没写全

比如这样写是错的:

var ldap_user = "cn=Manager"

这样写才是对的:

var ldap_user = "cn=Manager,dc=micmiu,dc=com"

转载于:https://my.oschina.net/cobish/blog/735998

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值