Go语言链接Ldap

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

具体Ldap与AD的参数以下图:github

输入图片说明

输入图片说明

输入图片说明

代码以下:数据库

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 错误:是由于绑定的帐号没写全测试

好比这样写是错的:ui

var ldap_user = "cn=Manager"

这样写才是对的:code

var ldap_user = "cn=Manager,dc=micmiu,dc=com"
相关文章
相关标签/搜索