2011-06-19 10 views
9

LDAP認証モジュールdjango-auth-ldapに問題があります。 LDAPに対してDjangoを使用してLDAPでユーザーを作成する

1)Authentificate:私は二つのことをやってみたいhttp://packages.python.org/django-auth-ldap/

:私はこのサイトからの設定例を使用しています現時点では 、私のLDAPデータベースが空である、私は追加しませんでしたそれに何か、実際に私は方法を知らない。しかし、私はまだ私のdjangoデータベースに保存されている私の古いログイン/パスワードで私のdjangoベースのサイトにログインすることができます。何故ですか?これを無視しないでください。代わりに、LDAPユーザー/パスワードでログインプロセスを実行しないでください。言い換えれば、私のLDAPデータベースが空であれば、私のログインのすべてが失敗することはありませんか?しかし、私はdjangoがdjango-auth-ldapモジュールを完全に無視するという印象を持っています。

2)djangoとLDAPを同期させてください(逆の方法ではありません) 私は、既存のユーザデータベースを使って認証をしたくありません。私はDjangoで新しいユーザーを作成し、これらのユーザーをLDAPに伝播して、私の場合は他のサービス、つまりopenfireサーバーと共有できるようにしたいと考えています。あなたはdjango-auth-ldapを使ってそれをどのようにしますか?ここで

は私の構成のコピー/ペーストである:私はLDAPについて多くを知らない申し訳

# Baseline configuration. 
AUTH_LDAP_SERVER_URI = "127.0.0.1" 

AUTH_LDAP_BIND_DN = "cn=admin,dc=nodomain" 
AUTH_LDAP_BIND_PASSWORD = "admin" 
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=nodomain", 
    ldap.SCOPE_SUBTREE, "(uid=%(user)s)") 

# Set up the basic group parameters. 
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=django,ou=groups,dc=nodomain", 
    ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)" 
) 
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="cn") 

# Only users in this group can log in. 
AUTH_LDAP_REQUIRE_GROUP = "cn=enabled,ou=django,ou=groups,dc=nodomain" 

# Populate the Django user from the LDAP directory. 
AUTH_LDAP_USER_ATTR_MAP = { 
    "first_name": "givenName", 
    "last_name": "sn", 
    "email": "mail" 
} 

AUTH_LDAP_PROFILE_ATTR_MAP = { 
    "employee_number": "employeeNumber" 
} 

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

AUTH_LDAP_ALWAYS_UPDATE_USER = True 

AUTH_LDAP_FIND_GROUP_PERMS = True 

AUTH_LDAP_CACHE_GROUPS = True 
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600 


# Keep ModelBackend around for per-user permissions and maybe a local 
# superuser. 
AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend', 
    'django.contrib.auth.backends.ModelBackend', 
) 

、私はちょうどので、私の質問はナイーブに聞こえるかもしれないが、今朝それをインストール。私はいくつかのサーバー間で更新して共有できる集中ユーザーベースが必要です。

ご協力いただきありがとうございます。

答えて

7

1)あなたの構成がインストールされ2つの認証バックエンドがあります。それは、それがなくなるまで成功して(または1つを見つけるまでDjangoは)順番に各1に対して認証を試みます

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

を。 LDAPディレクトリが空であるため、おそらく常に失敗するため、ModelBackendは常に1つのショットを取得します。 Djangoユーザデータベースに対してユーザを認証したくない場合は、リストからModelBackendを削除する必要があります。

2)django-auth-ldapは、DjangoユーザーをLDAPに伝播しません。これは、Djangoデプロイメントが、別々に管理されている既存のLDAPサービスに対して認証できるように設計されています。 DjangoアプリケーションからLDAPディレクトリの内容を操作するには、django-ldapdbを見てください。

関連する問題