0

SSL 経由の HTTP 基本認証を必要とする Django プロジェクトを作成しています。ユーザーは会社の LDAP サーバーに対して認証されます。これは、 https://docs.djangoproject.com/en/1.3/howto/auth-remote-user/で説明されている方法を使用して機能しています。

LDAP から取得した情報に基づいてさまざまなユーザー フィールドにデータを入力するメソッドをdjango.contrib.auth.backends.RemoteUserBackend定義するサブクラスを作成しました。configure_user()これは、ユーザーが HTTP 基本認証を使用してログインする場合に問題なく機能します。

私のプロジェクトでは、アプリのユーザーがユーザー名をフォームに入力できるようにする必要もあります。フォームが送信されたら、同等のことを行い、LDAP から不足しているすべてのフィールドをUser.objects.get_or_create(username=username)カスタムに入力したいと思います。RemoteUserBackend.configure_user()これは期待どおりに機能せず、代わりに既存のユーザーを取得する (良い) か、ユーザー名フィールドのみを設定してユーザーを作成する (悪い) かのいずれかです。

どうすれば望ましい動作を得ることができますか? Django の認証モデルを切り取ってカスタム モデルに置き換える必要はありませんが、必要に応じて実行できます。対象の Django のバージョンは 1.3 ですが、これは変更可能です。

4

1 に答える 1

0

問題の解決策を見つけましたが、HTTP 基本認証の代わりにセッション認証を使用するには、要件を緩和する必要があります。

django-auth-ldapを使用することで、Django の通常のセッション認証を介して会社の LDAP サーバーに対して認証し、LDAP から入力されたユーザーを作成することができました

django.contrib.auth.backends.RemoteUserBackenddjango-auth-ldap と競合するようであり、基本認証を使用してログインするユーザーは、django-auth-ldap からフィールドに入力されません。これを機能させるために、元の要件を変更できる場合があります。

于 2013-05-20T17:57:03.263 に答える