我的 Android 应用程序在正常操作期间连接到 LDAP 服务器。初始连接是匿名的,并且带有
EXTERNAL
绑定的 startTLS 用于执行身份验证,因为不允许匿名访问。 UnboundID LDAP SDK用作LDAP库。
最近
EXTERNAL
绑定失败,并出现错误“80090317:服务器未通过 TLS、数据 0、v2580 收到任何凭据”。这没有对应用程序或 Android 平台进行任何更改,服务器团队也声称服务器也没有任何更改。我已确认客户端和服务器证书均有效,并且证书确实已交换(通过HandshakeCompletedListener
)。
代码
// connect to server - anonymous login, non-SSL
LDAPConnection mConn = new LDAPConnection(address, port, "", "", null)
// start TLS
KeyManager km = (...);
SSLUtil sslUtil = new SSLUtil(km, new TrustAllTrustManager());
StartTLSExtendedRequest req = new StartTLSExtendedRequest(sslUtil.createSSLContext());
mConn.processExtendedRequest(req);
// TLS connection succeeds, proceed with bind
// EXTERNAL bind request with authzId left blank
// It should use the cert supplied during TLS
BindRequest request = new EXTERNALBindRequest("");
mConn.bind(request); // fails here
我尝试过以下方法:
远程服务器的团队可能需要一些时间来安排测试,因此与此同时,我想听听有关此处可能发生的情况的一些想法。
此行为似乎是由 2023 年 5 月引入的 Windows Server 上的一个 bug 引起的,并在 2023 年 10 月更新中修复。导致外部绑定可能失败的问题。这会导致轻量级目录访问协议 (LDAP) 查询和身份验证出现问题。