【问题标题】:What is the simplest way to SSO between Wordpress site on main domain and non wordpress site on sub domain在主域上的 Wordpress 站点和子域上的非 wordpress 站点之间进行 SSO 的最简单方法是什么
【发布时间】:2019-03-08 20:20:16
【问题描述】:

我有一个网站 www.mydomain.com 这是一个 Wordpress 网站,我在 www.panel.mydomain.com

上安装了另一个 PHP 脚本 (不是 Wordpress)

我在同一主机

上为 Wordpress 创建了一个数据库,为 PHP 脚本创建了一个数据库

子域上的PHP脚本是一个完全独立的网站,可以完美地独立运行

在我的 Wordpress 网站上,我使用 Woocommerce 销售不同的包,在购买了一些包后,我在 Wordpress 上当前用户的凭据和信息 会在 上重复>我的其他 PHP 脚本的用户表

我可以毫无问题地做到这一点 这是我无法弄清楚如何解决的问题:

我希望我的用户在子域上根本看不到我的 PHP 脚本的登录页面,如果 wordpress 上的用户已登录,则子域自动登录如果用户已注销 子域上的所有 url 都不可访问并重定向到 www.mydomain.com/login 或任何登录页面

所以基本上去掉了第二个脚本登录步骤 我对 php 有点陌生

请给我一些提示或一些资源 经过几天的搜索,我真的不知道 谢谢

【问题讨论】:

    标签: php wordpress session single-sign-on credentials


    【解决方案1】:

    简短的回答是您向用户发送一个安全令牌 (cookie),然后他们必须使用该令牌才能在您的其他系统上证明他们的身份。

    当您登录 WordPress 时,您需要制作一个插件,该插件会生成一个随机字符串,该字符串会发送到用户的浏览器,并将其保存在您 PHP 站点上的用户帐户中。然后,当用户访问您的 PHP 站点时,它会在登录页面请求一个 cookie。如果用户能够提供 cookie,PHP 站点会查找它,并使用 cookie 代替用户名和密码登录。

    有很多方法可以加强此方法的安全性以防止令牌被盗,但对于大多数用例,只需通过 HTTPS 传输它并确保它足够长/足够复杂就足够了。

    【讨论】:

    • 所以我首先正确理解我应该在我的 php 脚本的用户表上添加一个列作为令牌,每次我登录 wordpress 时我都会生成一个代码并将其写入这个用户表然后当我输入我的子域上的每个地址,例如 www.panel.mydomain/xxx 我检查令牌是否存在,如果存在,我为该用户启动会话??主要问题是,当有人输入这个地址 www.panel.mydomain.com/xxx 时,我如何检查哪个用户应该检查令牌??
    • 第二,如果用户出于某种原因清除了他的历史,浏览器上的cookie,还有一个令牌在桌子上!!而且会出问题第三,是不是最简单的方法?
    • 我遇到了一些答案,关于 JWT (Jason Web Tokens) 的文章,它是你提到的安全字符串,你有任何深入的例子吗?
    • 对于 www.panel.mydomain/xxx,您可能已经有一个安全脚本,每个页面都使用 include 或 require 调用该脚本。在正常登录情况下,它会查找会话变量以查看您是否已登录以及您的权限级别是什么,如果您未登录,则将您重定向到登录或 403 页面,您只需添加一个条件即可查看获取有效令牌,因此您不必手动将其添加到每个页面
    • 至于令牌仍然存在,令牌通常有一个过期时间,您可以在用户数据库中使用单独的日期时间列进行跟踪。因此,当您检查令牌时,您还要检查它是否是在过去 24 小时内制作的,或者您的限制是什么。此外,大多数浏览器会在 2 周后清除 cookie,因此即使令牌保留在您的数据库中,浏览器也会在很长时间后失去对它的跟踪。
    猜你喜欢
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2016-02-27
    相关资源
    最近更新 更多