2010-06-03 71 views
4

我需要为多个站点构建可伸缩的单点登录机制。场景:Single SignOn - 最佳做法

  • 中心Web应用程序注册/管理帐户(欧洲服务器)
  • 需要对我的用户数据库(美国/欧洲/亚太地区服务器)进行身份验证多个Web应用程序

我正在使用MySQL作为数据库后端。我想出的选择是复制所有服务器上的用户数据库(数据安全性?),或允许服务器直接连接到我的MySQL实例,通过明确允许my.cnf中的IP连接(高负载单点故障?)。

什么是为所有Web应用程序提供可伸缩和低延迟单点登录的最佳方式?在数据安全方面,跨所有Web应用程序复制用户数据库是个好主意吗?

注意:所有Web应用程序都提供了一个API,用户可以使用该API将小部件嵌入到自己的网站中。这些小部件通过令牌认证机制工作,这将再次需要根据我的用户数据库进行认证。

回答

3

我不会将身份验证集成到数据库级别,例如复制数据库或允许从其他服务器访问。这可能变得难以维护。我倾向于采用松散耦合的方法,在中央服务器上公开一个简单服务,让其他应用服务器运行身份验证请求。

你应该看看下面的问题(可能更多):

  • 如何避免服务器
  • 你可能无法扼制服务之间的密码明文传输,如果应用程序服务器的网络验证所有他们的用户来自同一个IP,因此您可能想要限制对某些客户端的访问,以避免恶意机器大量探测有效帐户。
  • 如何集中执行的东西,如会话过期
  • 如何处理/避免服务中断

技术可能会有所帮助:

或者,您可能希望让客户端使用中央服务来获取令牌,然后将该令牌提升并由目标服务器验证。有类似的体系结构(例如Kerberos票务服务器)可以作为灵感。