php - 从单独的服务器创建登录身份
问题描述
的背景
我有一个带有标准登录系统、哈希、用户名等的 Laravel 系统。我也有多个服务器。我自己作为 Web 开发人员的服务器,以及托管客户端站点的客户端服务器。一些客户有多个站点。
问题
我有一个场景,我想拥有客户可以登录的主网站(开发者网站)。
一旦他们登录门户,他们将看到该客户“拥有”的网站列表。
然后我会显示一个“登录”按钮,因此一旦他们单击该按钮,它就会将他们验证到远程站点并将他们重定向到它。(雅雅单登录)。
一般来说,这一切都是可能的,而且很容易,尤其是当站点位于同一台服务器上时,我可以访问两个数据库。
但是,在这个新场景中,主站点位于单独的服务器上。
我考虑了2个选项
选项1
在主站点的浏览器中设置一个 cookie,其中包含客户端站点将读取的某些信息。然后将它们重定向到辅助站点,该站点将检查该 cookie 然后进行身份验证。
选项 2
用户登录到主站点,选择“登录”,它将带有 api 信息的 curl 请求发送到辅助站点,然后辅助站点将以某种方式进行身份验证。
如果有人有任何想法,只要它确实损害安全性,越简单越好,或者建议将是最有帮助的
解决方案
您在选项 2 中的方向更好。你可以考虑这个
- 使用 PHP curl 将数据发送到目标站点
- 数据应该包含用户的登录名,加上一个“秘密字符串”,以便目标服务器知道流量来自您的主站点,然后 curl 可以简单地返回用户的登录凭据(用户名和密码) )
- 之后,系统可以使用用户名和密码为该特定用户登录目标站点。
[可选] 如果您在目标站点上启用了 SSL,那会更好,因为您可以在 curl 中启用 SSL 以避免“中间人”攻击。在这种情况下,请使用以下内容:
// Turn on SSL certificate verfication
curl_setopt($curl, CURLOPT_CAPATH, "/usr/local/www/vhosts/<yourdomainname>/httpdocs/cacert.pem");
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
推荐阅读
- javascript - 如何在反应js中动态传递setInterval()方法的不同时间
- r - 在数据框中生成一系列编号的列,其中包含前一个变量的函数
- javascript - 使用控制台更改 Chrome 上视频的分辨率
- ruby - 红宝石 | 将变量引用更改为 nil
- python - 如何连接到rabbitMQ docker容器?
- react-native - 如何更改 react-native-select-multiple 中复选框的位置,我想要它在标签之后
- python-3.x - 如何将财务报表中的数据提取到excel中
- .net - 当异步代码有多个都需要等待时,我如何返回单个 Task 对象?
- java - JVM:为什么我的 S0C 区域的大小为零?
- vba - 我如何在 div 标签之外抓取数据