您将如何实施一个具有以下目标的系统:

  • 管理身份验证,授权数十万现有用户 目前与第三方供应商的应用程序紧密集成(我们希望将这些用户分配到我们管理的东西中,并使我们的应用程序与其一起工作,再加上我们的第三方供应商与其一起工作)。
  • 管理链接到这些用户的个人资料信息
  • 必须能够从几乎任何平台(Windows、*nix、PHP、ASP/C#、Python/Django 等)上的任意数量的 Web 应用程序进行访问。

这里有一些示例实现:

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

这三个中的任何一个是最好的吗?是否还有其他符合上述目标并且更容易实施的解决方案?

** 我应该补充一点,几乎所有将根据用户数据库进行身份验证的应用程序都将在我们的控制之下。唯一的少数外部人员将是我们要从中删除当前用户数据库的应用程序,或许还有其他一两个应用程序。没有什么比需要 openID 服务器更广泛的了。

同样重要的是要知道,许多用户已经拥有这些帐户 5-8 年,并且知道他们的登录名和密码等。

有帮助吗?

解决方案

身份验证和授权/分析之间存在差异,因此不必将两者强制整合到一个工具中。使用 LDAP 进行身份验证并使用数据库进行授权的第二种解决方案似乎更强大,因为 LDAP 数据由用户控制,而数据库将由管理员控制。随着时间的推移,后者的结构和复杂性可能会发生变化,但身份验证就是身份验证。事实证明,这些功能的分离将更易于管理。

其他提示

如果您有现有的 ActiveDirectory 基础设施,那么这就是正确的选择。这对于已经设置 Windows 服务器进行身份验证的公司来说尤其有利。如果是这种情况,我倾向于“示例实现”中的第一个要点。

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

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

祝你好运!

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

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

您始终可以实现自己的 开放ID 服务器。已经有一个 OpenID 的 Python 库 所以这应该相当容易。

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

编辑: 我找到了一个 OpenID服务器协议在Django中的实现.

编辑2: 为您的用户实施 OpenID 有一个明显的优势。他们将能够使用自己的登录名登录 StackOverflow :-)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top