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"
相關文章
相關標籤/搜索