Центральный вход в Django, MediaWiki и Roundup без ущерба для пользовательских данных? - PullRequest
3 голосов
/ 04 февраля 2011

Я работаю над системой центрального входа в систему для приложения, написанного на Django, с вики-страницей MediaWiki и средством отслеживания ошибок Roundup. В настоящее время метод, который я собираюсь использовать, состоит в том, чтобы использовать расширение AuthDjango для Mediawiki (https://bitbucket.org/toml/django-mediawiki-authentication/src) и взломать что-то похожее для Roundup. Этот метод основан на создании модели SessionProfile в Django, которая отображает идентификаторы сеансов (взятые из файлы cookie) для пользовательских экземпляров, а MediaWiki / Roundup получает доступ к данным, напрямую запрашивая базу данных Django.

Преимущество этого состоит в том, что процессы входа в систему, сеанса и выхода из системы во всех трех приложениях легко объединяются. Однако проблема, с которой я столкнулся, заключается в том, что в MediaWiki / Roundup хранятся учетные данные для базы данных Django, а требования для получения доступа к учетным записям оболочки MediaWiki или Roundup намеренно менее строгие, чем для основного приложения Django (в настоящее время только один человек). имеет доступ к продукции Django). Таким образом, администраторы экземпляра MediaWiki / Roundup (т. Е. С доступом к оболочке) или любой, кто проник в систему с помощью удаленного эксплойта, потенциально могут взломать учетные записи пользователей на основном сайте.

Итак, мой вопрос: кто-нибудь знает, как лучше интегрировать механизмы входа в систему этих систем? Или как я мог бы предоставить MediaWiki / Roundup безопасный доступ к базе данных Django, сводя к минимуму вероятность злоупотреблений со стороны людей, имеющих доступ к оболочке MediaWiki?

1 Ответ

2 голосов
/ 04 февраля 2011

Вместо предоставления прямого доступа к БД, вы можете использовать Django для создания (JSON / XML / любой другой) веб-службы, выполняющей только те действия, которые вам нужны - войти, запросить правильность сеанса и пользователя, выйти из системы. Таким образом, только Django может редактировать данные в базе данных.

Затем Mediawiki и Roundup подключатся к вашему приложению Django (которое вы можете заблокировать, например, к нему можно получить доступ только изнутри, если все 3 приложения работают на одном сервере) через вызов HTTP (S), чтобы проверить, какой пользователь связан с конкретным сеансом.

Еще лучше, перенаправить пользователей в приложение Django для выполнения функций входа и выхода; таким образом, Mediawiki и Roundup вообще не будут иметь доступа к учетным данным пользователя - они могут получать информацию о пользователе, только если они предоставляют действительный идентификатор сеанса.

...