为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用 TLS 连接到 LDAP 时出错“LDAP 结果代码 201“ErrorNetwork”:

尝试使用 TLS 连接到 LDAP 时出错“LDAP 结果代码 201“ErrorNetwork”:

Go
四季花海 2021-09-13 17:00:07
我正在尝试使用http://www.github.com/mavricknz/ldap使用 LDAP 和 TLS 进行身份验证服务 当我使用以下代码仅使用基本身份验证时,一切正常。conn := ldap.NewLDAPConnection(ldapHost, ldapPort)conn.NetworkConnectTimeout = time.Duration(ldapConnTimeout) * time.Millisecondconn.ReadTimeout = time.Duration(ldapReadTimeout) * time.Millisecondif err := conn.Connect(); err != nil {    log.Println(err)    resp.WriteHeader(http.StatusInternalServerError)    return}defer conn.Close()// bind to ldapif err := conn.Bind(username, password); err != nil {    ldaperr := err.(*ldap.LDAPError)    if ldaperr.ResultCode == ldap.LDAPResultInvalidCredentials {        resp.Header().Set("WWW-Authenticate", `Basic realm="Item Codes Database"`)        resp.WriteHeader(http.StatusUnauthorized)    } else {        log.Println(err)        resp.WriteHeader(http.StatusInternalServerError)    }    return}但是当我尝试通过更改将 TLS 应用于我的代码时conn := ldap.NewLDAPConnection(ldapHost, ldapPort)到ldap.NewLDAPTLSConnection(ldapHost, ldapPort, &tls.Config{})它给了我一个错误LDAP Result Code 201 "ErrorNetwork": Invalid packet format。该错误来自方法conn.Connect(),当我深入研究它时,它甚至没有达到使用 TLS 配置或 TLS 标志的程度。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

好的,我找到了我的解决方案。我需要将端口从 ldap 的 389 更改为 ldaps 的 636,因为我们使用 TLS 协议。而且我还必须使用 methodNewLDAPSSLConnection来建立隐式 TLS 连接。

我不确定为什么NewLDAPTSLConnection不起作用。它使用显式 TLS,这要求我们首先建立正常连接(使用端口 389),然后尝试通过该连接启动 TLS。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信