django認証バックエンドdjango-auth-ldapを使用してLDAPサービスを認証しています。 ssl証明書を含むディレクトリへのパスを設定しようとしているとき。私はpyldapを使用していても(のpython-LDAPをアンインストールすることを示唆している。このprevious SO postから受け入れ答えを試してみたPython LDAP ValueError:set_option(ldap。OPT_X_TLS_CACERTDIR)を使用したときのオプションエラー
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
、のpython-LDAPのフォーク:
ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, '/etc/ssl/certs')
私はとValueErrorの例外を取得します)を実行して、brew-installedのopenldapを使って再インストールしてください。
LDFLAGS="-L/usr/local/brew/opt/openldap/lib" CPPFLAGS="-I/usr/local/brew/opt/openldap/include" pip install python-ldap
これは効果がないようです。私はthis guideに続いて、新しいバージョンのopenldap(brew経由)を使ってpyldapのバージョンをローカルにビルドしましたが、私は同じエラーが表示されます。ローカルビルドが新しいopenldapライブラリを使用しているかどうかを確認する方法があるかどうか、またはここに何か不足していることがあるかどうかはわかりません。どんな提案も大歓迎です! SO
上
他の既存の質問はthis questionへの答えは私のためには効果がありません。
AUTH_LDAP_GLOBAL_OPTIONS = {ldap.OPT_X_TLS_CACERTDIR: '/etc/ssl/certs'}
そのフォルダのアクセス許可を確認します。 Djangoはそれにアクセスできますか? – marin
はい、フォルダと内容はすべて読み取ることができます – Liz
私はそれを追跡しましたが、TLSがlibldapで利用可能な場合にのみ、指定されたパスをオプション構造にコピーします。したがって、Pythonモジュールとlibldapの間には切断があるようです。 'ldd/usr/local/lib/python3.6/site-packages/_ldap.so'の出力を表示できますか? – Melvyn