4

リポジトリを作成して表示するためのWebインターフェイスを備えた学校用のgitサーバーをセットアップするプロジェクトがあります。この Web パーツは、ユーザーを認識している Django によって処理されます。

ここで問題: 認証でプライベート リポジトリをプルおよびプッシュしたいのですが、SSH を使用してその部分を処理することはできません (IT 担当者はそのサポートを望んでいません)。HTTP プロトコルは「複雑な WebDAV」なしで読み取り専用であり (公式ドキュメントによると)、認証として .htaccess を使用します。.htaccess の問題は、Django でそれらを管理することです。Django ユーザーのハッシュを使用しようとしましたが、機能しませんでした。最後に、Git プロトコルは読み書き可能ですが、認証がありません。

要約:

  • Django のユーザー データベースにリンクされた認証が必要です。(同じデータを持つ場所が複数になるのを避けるため)
  • SSHなし
  • WebDAV と .htaccess を避ける

これらの制約により、認証を処理するために git デーモン ( github のコード) を書き直すことがアイデアになることがわかりましたが、Git クライアントがそれにどのように反応するかはわかりません。

別のアイデアがある場合、または WebDAV/.htaccess/... を使用した方がよいという意見があれば、喜んでお知らせします。

4

1 に答える 1

3

wsgi アプリケーションに認証を処理するように依頼する場合を除いて、Apache サーバーをセットアップすることもできます (私の構成で行っているように https を使用するものでも! )。

mod_wsgiの「アクセス制御メカニズム」を参照してください。

AuthType Basic
AuthName "Top Secret"
AuthBasicProvider wsgi
WSGIAuthUserScript /usr/local/wsgi/scripts/auth.wsgi
Require valid-user

auth.wsgi スクリプトは、Django ユーザー データベースに対して資格情報を確認できます。

その解決策は、git-http-backend(スマート http トランスポート) を呼び出すことを意味します。これは、WebDAV よりも効率的です。

于 2013-03-11T08:45:03.197 に答える