LDAP 服务器声称“服务器未通过 TLS 收到任何凭据”

问题描述 投票:0回答:1

我的 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

我尝试过以下方法:

  • 通过 SSL 启动初始连接,在开始时提供用户证书。服务器声称连接尚未绑定,这与 Microsoft 的 Active Directory 规范相反。
  • 尝试手动跟踪握手被证明是徒劳的 - Android 套接字代码似乎无法通过 Android Studio 进行调试,并且设置 javax.net.debug 选项不会产生任何输出。
  • 我发现数据包捕获解决方案需要 root 权限,因为与服务器的连接是通过 VPN 完成的

远程服务器的团队可能需要一些时间来安排测试,因此与此同时,我想听听有关此处可能发生的情况的一些想法。

java android active-directory ldap
1个回答
0
投票

此行为似乎是由 2023 年 5 月引入的 Windows Server 上的一个 bug 引起的,并在 2023 年 10 月更新中修复。导致外部绑定可能失败的问题。这会导致轻量级目录访问协议 (LDAP) 查询和身份验证出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.