4

更新しました

デフォルトのデータベースではなく LDAP サーバーで Django のデフォルトの管理者認証を行うにはどうすればよいですか? パッケージDjango Auth LDAPを見つけましたが、管理者ログインで使用するように構成することについては何もありません。LDAP構成に加えて、settings.py内に以下の行を入れてみました:

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

しかし、うまくいきません。最後の行を削除すると、LDAP で認証されず、デフォルトの認証エラーが表示されます。これは、ModelBackend がフォールバックであるためです。ドキュメントに記載されている構成をコピーして変更しようとしましたが、コンソールに次のエラーが表示されます。

Caught LDAPError while authenticating karlisson: INVALID_DN_SYNTAX({'info': 'invalid DN', 'desc': 'Invalid DN syntax'},)

私のsettings.py:

AUTH_LDAP_SERVER_URI = "ldap://192.168.0.2"

AUTH_LDAP_BIND_DN = "example_nt"
AUTH_LDAP_BIND_PASSWORD = "example"
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=admin,dc=example_nt,dc=com,dc=br",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

構文エラーがどこにあるのかわからない、LDAP 初心者。

4

2 に答える 2

12

管理者ログインは、通常のログインと同じように機能する必要があります。バックエンドを追加するだけでは十分ではなく、構成する必要があります。ドキュメントは実際に多くのことを言っています:

おそらくこれを設定する必要があります:

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_active": "cn=active,ou=groups,dc=example,dc=com",
    "is_staff": "cn=staff,ou=groups,dc=example,dc=com",
    "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com"
}

これらのフラグは、少なくとも管理者が使用する IIRCis_superuserです。

しかし、最も重要なのは次のものですsettings.py

AUTH_LDAP_SERVER_URI = "ldap://ldap.example.com"
import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com",
    ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

これらすべてを LDAP に接続するように設定してみてください。それでも問題が発生する場合は、そこからデバッグを試みることができます。

また、デバッグ情報を取得して、ldap へのリクエストが送信された場合に情報を入手してください (ldap によって作成されたログをチェックして、アプリからリクエストを受信したかどうかを確認することもできます)。

于 2012-01-04T13:54:36.900 に答える