php透过统一发放tickets实现单点登陆SSO功能
程序员文章站
2022-03-24 23:29:34
...
php通过统一发放tickets实现单点登陆SSO功能
sso登陆中心:
站点a,站点b,站点c,分别跨域,站点b当做统一认证中心,站点a,站点c登录请求转发到站点b,站点b当做统一登录,注册中心,也称第三方身份认证中心;用户从不同站点登录到第三方认证中心,完成登录验证后,会生成一个包含用户登录信息的加密key,并且生成多个不同子应用的带加密key的引导页面,用户可以*选择进入子应用引导页,完成子页面认证,从而无需分别登录子应用的登陆入口了,看效果:
通过a站点登录,登录成功后进入第三方登录引导界面:
通过按钮,附加统一的key,进入a站引导中心
通过按钮,附加统一的key,进入c站引导中心
已经实现b站点代理登陆,实现a,c站点登陆了,只要b中心,添加多个子站点列表,就可以实现一个登录,注册中心,一个key实现所有子应用自动登陆,替代了传统子应用单独登陆的问题,简化了用户操作流程!
公共函数
alert('登陆失败!');window.location.href='".$url."';"; }}function gethost(){ return "http://".$_SERVER['HTTP_HOST'];}function chklogin(){ if(isset($_SESSION['login']) && $_SESSION['login']=='verifyok'){ }else{ $host=gethost(); header("location:$host"); }}function decode($string = '', $skey = 'lmj951753') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key $value) $key
a站登录入口:
a站点 这是a站
a站引导页:
登陆引导中心 欢迎回来!这里是A站点
sso登陆中心:
'进入A应用','url'=>'http://www.a.com/'), array('name'=>'进入C应用','url'=>'http://www.c.com/'));if($username=="admin" && $password=="123456"){ $str=time().','.$username.",".$password.",verifyok,".$refer; $key=encode($str); echo "登陆成功!".$username.'
'; foreach ($application as $k => $v) { if($refer==$v['url']){ echo "".$v['name']." "; }else{ echo "".$v['name']." "; } }}else{ echo ""; exit();}function goback($refer){ header("Location:$refer"); exit();}function decode($string = '', $skey = 'lmj951753') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key $value) $key
c站作为子站点和a站逻辑结构差不多,就不列举了,一个简单的基于php实现的sso登陆认证就完成了
相关文章
相关视频