我正在使用 django 身份验证后端django-auth-ldap对 LDAP 服务进行身份验证。尝试设置包含 ssl 证书的目录的路径时;
ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, '/etc/ssl/certs')
我得到一个 ValueError 异常:
File "/Users/liz/web_application/work/ldap_settings.py", line 5, in <module>
ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, '/etc/ssl/certs')
File "/Users/liz/.envs/dev/lib/python3.6/site-packages/ldap/functions.py", line 139, in set_option
return _ldap_function_call(None,_ldap.set_option,option,invalue)
File "/Users/liz/.envs/dev/lib/python3.6/site-packages/ldap/functions.py", line 66, in _ldap_function_call
result = func(*args,**kwargs)
ValueError: option error
我已经尝试了从以前的 SO 帖子中接受的答案,该答案建议卸载 python-ldap (尽管我使用的是pyldap,python-ldap 的一个分支)并使用 brew 安装的 openldap 重新安装,方法是运行:
LDFLAGS="-L/usr/local/brew/opt/openldap/lib" CPPFLAGS="-I/usr/local/brew/opt/openldap/include" pip install python-ldap
这似乎没有任何效果。我也按照本指南,使用较新版本的 openldap(通过 brew)在本地构建 pyldap 版本,但我仍然看到相同的错误。我不确定是否有某种方法可以验证我的本地构建是否使用了较新的 openldap 库,或者我是否在这里遗漏了什么?任何建议都非常感谢!
关于 SO 的其他现有问题
这个问题的答案对我没有影响;设置 AUTH_LDAP_GLOBAL_OPTIONS 而不是 set_option 会导致相同的 ValueError
AUTH_LDAP_GLOBAL_OPTIONS = {ldap.OPT_X_TLS_CACERTDIR: '/etc/ssl/certs'}