使用gopkg.in/ldap.v2的LDAP身份验证错误:无法读取LDAP响应数据包:意外的EOF

时间:2016-08-09 21:53:13

标签: go ldap

我是golang的新手,我一直在尝试使用gopkg.in/ldap.v2实现ldap身份验证。

下面是我使用的代码。文档中的示例:https://godoc.org/gopkg.in/go-ldap/ldap.v2

// The username and password we want to check
username := "someuser"
password := "userpassword"

bindusername := "readonly"
bindpassword := "password"

l, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", "ldap.example.com", 389))
if err != nil {
    log.Fatal(err)
}
defer l.Close()

// Reconnect with TLS
err = l.StartTLS(&tls.Config{InsecureSkipVerify: true})
if err != nil {
    log.Fatal(err)
}

// First bind with a read only user
err = l.Bind(bindusername, bindpassword)
if err != nil {
    log.Fatal(err)
}

// Search for the given username
searchRequest := ldap.NewSearchRequest(
    "dc=example,dc=com",
    ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
    fmt.Sprintf("(&(objectClass=organizationalPerson)&(uid=%s))", username),
    []string{"dn"},
    nil,
)

sr, err := l.Search(searchRequest)
if err != nil {
    log.Fatal(err)
}

if len(sr.Entries) != 1 {
    log.Fatal("User does not exist or too many entries returned")
}

userdn := sr.Entries[0].DN

// Bind as the user to verify their password
err = l.Bind(userdn, password)
if err != nil {
    log.Fatal(err)
}

// Rebind as the read only user for any futher queries
err = l.Bind(bindusername, bindpassword)
if err != nil {
    log.Fatal(err)
}

这是我在First Bind步骤中遇到的错误:无法读取LDAP响应数据包:意外的EOF

我被困在这里。有人能帮我一下吗 。感谢

0 个答案:

没有答案