管理大型用户数据库以进行单点登录

时间:2008-09-16 23:08:33

标签: django authentication active-directory ldap authorization

如何实现具有以下目标的系统:

  • 管理身份验证, 授权 数十万 现有用户目前与第三方供应商的应用程序紧密集成(我们希望将这些用户排除在我们管理的内容之外,并使我们的应用能够对付它,以及我们的第三方供应商反对它。)
  • 管理与这些用户相关联的个人资料信息
  • 几乎可以在任何平台(Windows,* nix,PHP,ASP / C#,Python / Django等)上从任意数量的Web应用程序访问。

这里有一些示例实现:

  • LDAP / AD服务器来管理所有内容。对所有配置文件数据使用自定义架构一切都可以针对LDAP / AD进行身份验证,我们可以在自定义架构中存储各种ACL和配置文件数据。
  • 仅使用LDAP / AD进行身份验证,使用某种传统数据库(MSSQL / PostgreSQL / MySQL)或基于文档的数据库(CouchDB,SimpleDB等)将LDAP用户绑定到最强大的配置文件/授权服务器。使用LDAP进行授权,然后点击DB获取更多高级内容。
  • 使用传统数据库(关系或文档)来处理所有事情。

这三种中哪一种最好?是否有其他解决方案符合上述目标并且更容易实施?

**我应该补充一点,几乎所有针对用户数据库进行身份验证的应用程序都将由我们控制。只有少数局外人将是我们正在删除当前用户数据库的应用程序,也许还有1或2个其他人。没有什么比需要openID服务器更广泛。

知道很多这些用户拥有这些帐户5到8年并且知道他们的登录名和密码等等也很重要。

5 个答案:

答案 0 :(得分:3)

身份验证和授权/分析之间存在差异,因此不要强制要求同时使用单个工具。您的第二个使用LDAP进行身份验证和使用DB进行授权的解决方案似乎更加健壮,因为LDAP数据由用户控制,而数据库将由管理员控制。随着时间的推移,后者可能会在结构和复杂性方面发生变化,但身份验证只是认证。分离这些功能将更易于管理。

答案 1 :(得分:2)

如果您有现有的ActiveDirectory基础架构,那将是最佳选择。这对于已经设置了Windows服务器进行身份验证的公司尤其有利。如果是这种情况,我会倾向于“示例实现”中的第一个要点。

否则,它将是AD和开源LDAP选项之间的折腾。

为单点登录推送自己的身份验证架构可能是不可行的(特别是考虑到您可能需要执行的大量文档和集成工作),并且显然不会将您的身份验证服务器捆绑到任何一个在您的系统上运行的应用程序(因为您希望它能够独立于此类应用程序的负载)。

古德勒克!

答案 2 :(得分:0)

仅使用LDAP / AD进行身份验证,使用某种传统数据库(MSSQL / PostgreSQL / MySQL)或基于文档的数据库(CouchDB,SimpleDB等)将LDAP用户绑定到最强大的配置文件/授权服务器。使用LDAP进行授权,然后点击DB获取更多高级内容。

答案 3 :(得分:0)

我们有不同的网站,大约有10万用户,他们都使用普通数据库。如果大多数应用程序都可以访问数据库,则可以使用此解决方案。

答案 4 :(得分:-1)

您始终可以实施自己的OpenID服务器。已经有Python library for OpenID因此它应该相当容易。

当然,您不需要接受应用程序中其他服务器授权的登录。接受仅由您自己的服务器授权的凭据。

修改:我找到了implementation of OpenID server protocol in Django

Edit2 :为用户实施OpenID有一个明显的优势。他们可以通过登录登录StackOverflow: - )