1

我想使用 Multipass 在两个 PHP 网站之间实现 SSO。我在以下链接中找到了一个生成多通道的函数:

https://github.com/rps-repo/Redmine-PHP-MultiPass/blob/master/multipass.php

我使用以下函数生成多通道:

function gen_multipass($data, $site_key, $api_key)
{
$salted = $api_key . $site_key;
$hash = hash('sha1', $salted, true);
$saltedHash = substr($hash, 0, 16);
$iv = "OpenSSL for Ruby";
// double XOR first block
for ($i = 0; $i < 16; $i++)
{
    $data[$i] = $data[$i] ^ $iv[$i];
}

$pad = 16 - (strlen($data) % 16);
$data = $data . str_repeat(chr($pad), $pad);

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');
mcrypt_generic_init($cipher, $saltedHash, $iv);
$encryptedData = mcrypt_generic($cipher, $data);
mcrypt_generic_deinit($cipher);
return urlencode(base64_encode($encryptedData));
}

我将用户重定向到以下网址:

http://mywebsite.com/?sso=' . $multipass;

在哪里$multipass = gen_multipass($data, $site_key, $api_key);

http://mywebsite.com/我已经获取了查询字符串值,即$_GET['sso']. 现在我应该如何从这个编码的多通道字符串中获取原始数据?

或者

有没有更好的方法在两个 PHP 网站之间实现 SSO?

4

0 回答 0