DjangoとCommon Accessカード(CAC)
-
04-10-2019 - |
質問
Pythonで書かれたWebアプリが計画されています。Djangoは、フレームワークとして主要な候補です。
要件の1つは、CACアクセスです。ユーザー名とパスワードを入力する必要性が必要です。私が伝えることができることから、CAC AccessはDjangoに含まれる「バッテリー」の一部ではありません。
モノリシックなフレームワーク(必ずしも悪い属性ではない)として、Djangoは、コアを変更すると、メンテナンスが高くなるための担当者を持っています。 DjangoサイトにCACアクセスを簡単に追加できますか?その後簡単に維持できますか?
それとも、別のPythonフレームワークを検討する必要がありますか?
参考までに。CACアクセスに関する興味深いプレゼンテーション リンク
解決
これを有効にするためにコアを変更する必要はありません。 Djangoはサードパーティの認証バックエンドをサポートしており、書くのはかなり簡単です。2つの方法をサポートするだけです。 get_user
と authenticate
. 。そのため、実装はCACインターフェイスを使用してこれらの操作を実行する必要があり、すべてが通常どおりに機能します。
見る ドキュメント 詳細については。
他の回答の後に編集されました なぜこれがDjangoでこれが難しいと言っているのかわかりません。はい、Djangoの多くの部分をカスタマイズするのは困難です。しかし、これは作られた特定の部分です 非常に 簡単。私はDjangoでいくつかの認証バックエンドを書きましたが、それらは本当にシンプルであるだけでなく、管理者を含むフレームワークの残りの部分で「ただ機能」しています。これを機能させるために他の何かを変更する必要はありません。
他のヒント
私は今日、これをdjango.contrib.auth.middleware.remoteusermiddlewareをサブクラス化して、ヘッダープロパティをApache confに設定したものに変更しました。 django.contrib.auth.backends.remoteuserbackendを設定に追加しただけで、完全に機能します。
contrib.authを伸ばすことは首の痛みです。それはダジャンゴで唯一の最悪のことです。高度にカスタマイズされたAUTHバックエンドが必要な場合は、別のフレームワークを使用することをお勧めします。