python - 来自 Windows 客户端的无密码 Python LDAP3 身份验证

标签 python windows authentication active-directory ldap

我正在使用很棒的 ldap3 包,我正在尝试连接事件目录服务器,但不需要以纯文本形式提供实际凭据。

支持以下 SASL 机制。 ['GSSAPI', 'GSS-SPNEGO', 'EXTERNAL', 'DIGEST-MD5']

我尝试安装 GSSAPI 包,但它在我的 Windows 机器上不起作用。 pip install gssapi 的错误是: subprocess.CalledProcessError:命令“krb5-config --libs gssapi”返回非零退出状态 1。

有人可以为此提供一个简单的例子吗? 我相信 GSS-SPNEGO 可能是解决方案,但我没有在互联网上找到任何易于理解的示例。

最佳答案

谢谢你提出这个问题。我今天给了它最后一击,让它开始工作。

See Davide's answer

它要求您拥有 ldap3 软件包并安装 winkerberos 软件包:

pip install winkerberos

然后您需要将您的站点包 (PYTHON_HOME\Lib\site-packages\ldap3\protocol\sasl\kerberos.py) 中的 kerberos.py 文件替换为他链接到的文件replacement kerberos.py .

您需要在替换的 kerberos.py 文件中更改以下行:

from treadmill import kerberoswrapper as kerberos 

更改为

import winkerberos as kerberos

然后你可以这样连接:

from ldap3 import Server, Connection, Tls, SASL, GSSAPI
import ssl

tls = Tls(validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1)
server = Server('server_fqdn', use_ssl=True, tls=tls)
c = Connection(server, authentication=SASL, sasl_mechanism=GSSAPI)
c.bind()
print(c.extend.standard.who_am_i())
c.unbind()

将 server_fqdn 替换为您的 AD 服务器的完全限定域名。

您可能希望将版本值更改为您的 AD 服务器使用的任何协议(protocol)。

如果有人有更简单的方法来完成这个,请加入!

关于python - 来自 Windows 客户端的无密码 Python LDAP3 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279503/

相关文章:

python - Maya Python 在渲染设置中更改当前渲染器

windows - Windows PATH 上的批处理字符串搜索

javascript - 引用错误: request is not defined in NodeJS Session

java - Google Cloud Endpoints 限制...任何建议的解决方案?

javascript - 通过javascript使photoshop运行系统命令

python - 使用 WTForms 表单数据更新模型

c++ - 为什么windows下改属性为readonly后还能写入文件?

css - Windows 中几乎所有浏览器的滚动条(不是 Mac)

google-app-engine - 如何使用 webapp.RequestHandler 链处理请求

python - 从基于另一个列表的列表列中删除列表值