我正在为一个用 Django 编写的应用程序开发一个中央登录系统,它带有一个 MediaWiki wiki 和一个 Roundup bugtracker。目前,我正在考虑使用的方法是使用 Mediawiki 的 AuthDjango 扩展(https://bitbucket.org/toml/django-mediawiki-authentication/src)并为 Roundup 破解类似的东西。此方法依赖于在 Django 中创建 SessionProfile 模型,该模型将会话 ID(取自 cookie)映射到 User 实例,MediaWiki/Roundup 通过直接查询 Django 数据库来访问数据。
这样做的好处是所有三个应用程序的登录、会话和注销过程很容易统一。但是,我遇到的问题是它依赖于 MediaWiki/Roundup 存储了 Django 数据库的凭据,并且访问 MediaWiki 或 Roundup shell 帐户的要求故意不如主 Django 应用程序严格(目前只有一个人具有 Django 生产访问权限)。因此,MediaWiki/Roundup 实例的管理员(即具有 shell 访问权限)或任何通过远程漏洞入侵的人都可能能够劫持主站点上的用户帐户。
所以我的问题是:有人知道整合这些系统登录机制的更好方法吗?或者,我如何能够让 MediaWiki/Roundup 安全地访问 Django 数据库,同时最大限度地减少有权访问 MediaWiki shell 的人滥用的可能性?