如何集成一键登录到已有业务网站
2014-08-21
如果您在云平台开通了代理网站cloud.aaa.com,并且此前已在运营网站www.aaa.com,您可以将cloud.aaa.com集成到www.aaa.com的系统中,这样您的用户无需在cloud.aaa.com注册,即可使用已有的会员系统提供登录验证。
cloud.aaa.com以下简称云平台,www.aaa.com以下简称主站。
用户在主站登录成功后,需回传以下参数到云平台:
参数 | 描述 |
usr | 用户信息组合,用两个逗号连接uid、httphost、time三个值,再以base64编码: uid 用户名 httphost 主站域名 time 时间戳,整型 |
sign | 加密签名,结合了上面3个参数以及ssokey |
sign值算法如下:
1. 将uid、httphost、time、ssokey四个参数拼接成一个字符串
2. 将拼接后的字符串进行md5加密,即得sign
PHP示例:
php示例代码
$uid = $_SESSION['username']; $httphost = $_SERVER['HTTP_HOST']; $time = time(); $md5 = md5($uid.$httphost.$time.$ssoKey); $fromUrl .= strpos($fromUrl, '?') === false ? '?' : '&'; $fromUrl .= "usr=".urlencode(base64_encode("$uid,,$httphost,,$time"))."&sign=$md5"; //对方传过来的参数,原样传回去 if($_REQUEST['params']) $fromUrl .= '¶ms='.urlencode($_REQUEST['params']); header("Location: $fromUrl"); exit; |
ASP示例(base64和md5源代码见附件):
asp示例代码
httphost = request.servervariables("HTTP_HOST") '取时间戳,php的时间戳定义是从格林威治时间1970年1月1日 00:00:00到当前时间的秒数 basetime = "1970-01-01 00:00:00" phptime = datediff("s", basetime, now()) '3个用户信息加上ssokey,签名 sign = md5(username&httphost&phptime&ssokey,32) response.write sign&"<br/>" usr = encode64(username&",,"&httphost&",,"&phptime) response.write usr&"<br/>" '跳转到回调地址 response.redirect from&"?usr="&usr&"&sign="&sign |
注意:
$ssokey是AES加密密钥,在云平台后台管理系统-代理网站设置页面中提供。
您还需要将允许跨站验证的主站网站域名添加到“跨站登陆网站域名”中,一行一个。
远程登录嵌套页面地址是用于iframe嵌套,拥有更佳体验,请参考:
http://www.aaa.com/login.php?from=http://cloud.aaa.com/ssologin
其中login.php是您主站的登录验证程序,from参数必须携带云平台地址加/ssologin