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 ですが、これは変更可能です。