我需要整合两个网站,什么是最好的方式来携带登录信息


I need to integrate two sites, what's the best way to carry over login information?

所以,我有两个站点,站点A和B。我需要使B成为A的一部分。我通过向A添加一个模块来做到这一点,并且在该模块中,包含指向B的链接的iframe。因此,有效地说,B仍然可以作为一个独立的站点访问,但它也可以通过A访问。现在,这两个网站都需要登录才能访问。我需要绕过登录网站B时,它是通过网站A.我设法绕过它,但只有当两个网站托管在同一台服务器上(我使用会话变量),但现在我需要能够绕过登录屏幕上的B不管它是托管在服务器上。那么,我怎么做呢?

一开始我想到了cookie,但是cookie是特定于域的,这两个站点可能托管在不同的域上。

是否有办法使用GET?因此,站点A调用url, url中写有用户名,然后站点B读取url,解析它并相应地登录。我不知道如何实现这个,调用什么样的url, B站点需要什么样的php代码,最后,如何保证这样的安全?

谢谢你的帮助。

发送一个带有哈希值的UUID到站点b。该哈希值应该是只有两个服务器都知道并可以解码的东西,因此应该像下面这样工作。

A站点

<?php
$salt = 'ashfiu8435t43434t fgfjgfgfuguSGDSBDY77;';
$uuid = ''; // this should be set to the users ID
$hash = sha1($salt . $uuid);
?>
<a href="http://siteb.com?hash=<?php echo ($hash); ?>&uuid=<?php echo $uuid; ?>">Site B</a>

站点B

<?php
$salt = 'ashfiu8435t43434t fgfjgfgfuguSGDSBDY77;';
$uuid = $_GET['uuid'];
$sent_hash = $_GET['hash'];
$local_hash = sha1($salt . $uuid);
if($sent_hash === $local_hash) {
   echo 'Logged in! Yay!';
} else {
   echo 'Authentication failed';
}

你应该使哈希更难以伪造或计算,并使它在给定时间后过期,这样人们就不能只是保存哈希并重复使用它们或传递它们。我故意让它保持简单,以显示这将工作