2013-03-11 4 views
4

У меня есть проект для установки git-сервера для моей школы с помощью веб-интерфейса для создания репозиториев и отображения их. Эта веб-часть будет обрабатываться Django, которая знает пользователей.Git с проверкой подлинности, но без ssh

Теперь проблема: я хочу, чтобы аутентификация вытащила и нажала частные репозитории, но я не могу использовать SSH для обработки этой части (ИТ-ребята не хотят поддерживать эту поддержку). Протокол HTTP доступен только для чтения без «complexe WebDAV» (according to the official doc) и использует .htaccess как аутентификацию. Проблема с .htaccess заключается в управлении ими с помощью Django: я пытался использовать хэш-код пользователя Django, но он не работал. И, наконец, протокол Git - это чтение-запись, но ему не хватает аутентификации.

Подводя итог:

  • Я хочу аутентификации, связанный с базой данных пользователей Джанго. (Для того, чтобы избежать наличия нескольких мест с такими же данными)
  • Нет SSH
  • Избегайте WebDAV и .htaccess

С этими ограничениями я обнаружил, что переписывание GIT демон (code on github) для аутентификации была бы идея, но Я не знаю точно, как клиент Git отреагирует на это.

Если у вас есть другая идея или вы хотите сказать мне, как лучше использовать WebDAV/.htaccess/..., я буду рад услышать это!

ответ

3

Вы можете настроить сервер Apache (даже один с https, как я делаю в my config!), За исключением того, что вы попросите ваше приложение wsgi обрабатывать аутентификацию.

См "Access Control Mechanisms", в 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 (smart http transport), который эффективен в руде, чем WebDAV.

+0

Спасибо! Кажется, именно то, что я хотел, давайте попробуем это реализовать. :) – Cranium