我需要为多个站点构建一个可扩展的单点登录机制。设想:
我使用 MySQL 作为数据库后端。我想出的选项要么是在所有服务器上复制用户数据库(数据安全?),要么允许服务器直接连接到我的 MySQL 实例,方法是在 my.cnf 中明确允许来自其 IP 的连接(高负载?单点故障) ?)。
为所有 Web 应用程序提供可扩展且低延迟的单点登录的最佳方式是什么?在数据安全方面,跨所有 Web 应用程序复制用户数据库是否是一个好主意?
注:所有 Web 应用程序都提供一个 API,用户可以使用该 API 将小部件嵌入到他们自己的网站中。这些小部件通过 token 身份验证机制工作,该机制将再次需要针对我的用户数据库进行身份验证。
最佳答案
我不会在数据库级别集成身份验证,如复制数据库或允许从其他服务器访问。这可能变得难以维护。我更喜欢松散耦合的方法,通过在您的中央服务器上公开一个简单的服务,让其他应用程序服务器运行身份验证请求。
您应该研究以下问题(可能更多):
可能有用的技巧:
或者,您可能希望客户端使用中央服务来获取 token ,然后将其提升到目标服务器并由目标服务器验证。有一些类似的架构(例如 Kerberos 票务服务器)可以作为灵感。
关于authentication - 单点登录 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962918/