Python LDAP 模块是否支持 LDAP 通道绑定和 LDAP 签名?



2020 年 3 月将有一个Microsoft Active Directory 更新,默认启用 LDAP 通道绑定和 LDAP 签名,请参阅 https://support.microsoft.com/en-us/help/4520412/2020-ldap-channel-binding-and-ldap-signing-requirement-for-windows

当激活 LDAP 通道绑定和 LDAP 签名以查询 Active Directory 中的数据时,Python LDAP 模块是否仍能工作?

我是否必须更改任何内容或开箱即用?

我像这样连接到活动目录:

conn = ldap.initialize('url', bytes_mode=False)
conn.set_option(ldap.OPT_REFERRALS, 0)
conn.start_tls_s()
conn.simple_bind_s('username', 'password')

更新后我必须使用的最低 Python 和 ldap 模块版本是多少?

提前谢谢。

如果您使用的是简单绑定(如在代码示例中(,则客户端中不需要更改。它将继续与LdapEnforceChannelBinding=2合作。

如果您强制要求签名(LDAPServerIntegrity=2(,那么您将无法在没有 ldaps 或 STARTLS 的情况下使用简单绑定(但您的示例代码似乎请求 STARTTLS,因此它应该继续工作(。

但是,我还没有测试带有SASL的Pyton-ldap是否设置了绑定信息,如果您想使用GSSAPI/Kerberos或SASL/Digest-md5,这将是相关的。两者都不再适用于未修改的客户端(例如,使用 Java sun-ldap JNDI 提供程序失败(。

我认为通道绑定不会影响通过TLS(LDAPS(的LDAP简单绑定。 频道签名是另一回事,但使用 TLS 也可以。

据我了解,通道绑定是针对 CBT 令牌的,并且是 SATLMv2 的 SASL/NTLM 的一部分,然后不是由 LDAP 直接实现,而是通过使用 SASL。从一个 github 项目中 https://github.com/jborean93/ntlm-auth/blob/master/README.md 我可以找到 CBT 定义为从服务器证书派生的一些值,我想它可能被 rfc 5929 所涵盖,并且通道绑定令牌在第 4 章"tls-server-end-point"通道绑定类型中定义。

对于GSSAPI/Kerberos也是如此(见 https://github.com/requests/requests-kerberos/blob/master/requests_kerberos/kerberos_.py _get_channel_bindings_application_data(

不过我没有看过SASL/Digest-md5 CBT。

通道绑定是 CBT:https://support.microsoft.com/en-us/help/4034879/how-to-add-the-ldapenforcechannelbinding-registry-entry

最新更新