我有四个不同的php网站。第一个网站是在codeigniter中实现的,第二个是在核心php中实现的,第三个和第四个网站是在wordpress中实现的。所有4个网站都具有不同的登录信息(用户身份验证)。
现在我想更改所有网站的用户身份验证。 我希望我的用户为我的4个网站使用一个电子邮件ID和密码。如果用户登录任何网站,那么他应能够自动登录其他3个网站而无需再次登录(类似于,使用一个谷歌帐户,我们可以登录googleplus,youtube,地图,驱动器)。
我可以将所有四个php网站保存在一个域下(使用子域)。但我不知道如何为所有4个不同的网站实现单点登录。
我最担心的是,我正在为4个网站使用4个不同的数据库。每个数据库都有自己的“用户表”。现在我如何为所有4个网站整合一次登录
我不想使用“通过Gmail登录或通过Facebook登录”。我想拥有自己的所有网站登录系统
任何人都可以建议我,从哪里开始?
答案 0 :(得分:1)
我建议您使用SAML协议来解决您的问题。
使用唯一的表,用户数据:mail,password创建一个简单的数据库。将来自不同4个站点的用户转储到此数据库。
部署基于simpleSAMLphp的IdP,并将数据库用作authsource。
使用simpleSAMLphp为每个应用程序部署一个SP,并将这些SP连接到您的IdP。
在SP与您的应用程序之间的集成中,请确保您支持SSO,SLO以及用户配置。
就是这样,通过这种方法,您可以在不同的域中使用SSO应用程序,并且很容易在将来添加更多应用程序。
P.S如果您的平台需要新用户,请创建一个小型注册应用程序,让用户添加电子邮件并传递将存储在IdP的数据库中。其他方法是决定注册将在您的4个应用程序之一中完成,在其他应用程序中禁用该功能并使用该数据库作为您的身份验证源。
如果您的所有应用程序都在同一台计算机上,则其他替代方法是创建具有4个数据库的凭据信息的第5个应用程序。 您需要在4个应用中找到用户注册的逻辑,然后在其中加载第5个应用的代码并在其余应用中处理注册。
对于SSO很容易。找到登录代码逻辑所在的4个应用程序,然后在加载提示用户/通过表单的代码之前,检查是否存在全局唯一会话(如果存在),强制在应用程序中登录。请注意,您将在用户首次登录任何应用程序时设置此全局会话。
那是我的2美元,我更喜欢第一种解决方案,更标准。
答案 1 :(得分:0)
确定它可能!
我会把wordpress数据库数据带给我,因为我不会尝试编辑wordpress authentification。您只需将其他2个网站与wordpress-database连接起来,然后将电子邮件重新密封。但你必须表明,因为wordpresspassword是一个哈希值。
祝你好运!