golang ldap

参考:https://gocn.vip/article/669

配置:

addr:ip:389
bindUserName: cn=admin,dc=simon,dc=com
bindPassword:xxxxx
searchDn: dc=simon,dc=com

实现

参考:https://github.com/go-ldap/ldap


import (
    "fmt"
    "github.com/go-ldap/ldap"
)

type LDAPConfig struct {
       Addr                  string
       BindUserName string
       BindPassword   string
       SearchDN         string 
}

type LDAPService struct {
    Conn     *ldap.Conn
    Config     LDAPConfig
}

func NewLDAPService(config LDAPConfig) (*LDAPService, error) {
    conn, err := ldap.Dial("tcp", config.Addr)
    if err != nil {
        return nil, err
    }

    // NOTE(chenjun): 暂时先不skip verify
    // err = conn.StartTLS(&tls.Config{InsecureSkipVerify: true})
    // if err != nil {
    //  return nil, err
    // }

    err = conn.Bind(config.BindUserName, config.BindPassword)
    if err != nil {
        return nil, err
    }

    return &LDAPService{Conn: conn, Config: config}, nil
}

// Login 登录
func (l *LDAPService) Login(userName, password string) (bool, error) {
    searchRequest := ldap.NewSearchRequest(
        l.SearchDN,
        ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
        fmt.Sprintf("(&(objectClass=inetOrgPerson)(mail=%s))", userName),
        []string{"dn"},
        nil,
    )

    sr, err := l.Conn.Search(searchRequest)
    if err != nil {
        return false, err
    }

    if len(sr.Entries) != 1 {
        return false, fmt.Errorf("User does not exist or too many entries returned")
    }

    userDN := sr.Entries[0].DN
    err = l.Conn.Bind(userDN, password)
    if err != nil {
        return false, err
    }

       err = l.Conn.Bind(l.Config.BindUserName, l.Config.BindPassword)
    if err != nil {
        return false, nil
    }

    return true, nil
}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,063评论 1 3
  • 6- 章的翻译见:https://www.jianshu.com/p/835c2db4a1c4 说明 该文档根据官...
    耳边的火阅读 9,833评论 2 15
  • 文/欣欣熳 -1- 今天在看咪蒙老师的文章时,才知道她生病了。宫颈癌前病变。 但通篇看下来,我为之震撼的竟然不是她...
    欣欣熳阅读 721评论 0 2
  • 三十而立 不知不觉,马上就要三十了,心里一想到就要三十了,突然感觉心慌起来。三十而立,是一句老话,自然有它的道理。...
    一本胡诌阅读 175评论 0 0
  • 今天,你不必蜗居在家中 享受空调制造的颓丧的风 你的躯体还不如旷野上的一棵树 萎缩的健康不会前行 今天,你不必放下...
    货车司机牛二哥阅读 280评论 0 1