登录  /  注册
博主信息
博文 42
粉丝 3
评论 2
访问量 92102
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP单点登录
Whitney的博客
原创
2414人浏览过
一、PHP单点登录原理

单点登录的技术实现机制:当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据ticket;用户再访问别的应用的死后,将ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。如果通过检验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

可以看出,要实现SSO,需要以下主要的功能:

所有应用系统共享一个身份认证系统;所用应用系统能够识别并提取ticket信息;应用系统能够识别已经登录过的用户,能自动判断当前用户是否已经登录过,从而完成单点登录的功能。 二、PHP单点登录过程登录流程:

1.第一次登录某个网站:

1)用户输入用户名密码,向用户验证中心发送登录请求;

2)当前登录站点,通过webservice请求,验证用户名密码的合法性。如果验证通过,则声称ticket,用于标识当前会话的用户,并将当前登录子站的站点标识符记录到用户中心;最后将获取的用户数据和ticket返回给子站。如果验证不通过,则返回相应的错误状态码;

3)根据上一步的webservice请求返回的结果,当前子站对用户进行登录处理:如状态码表示成功的话,则当前站点通过本站cookie保存ticket,并在本站记录用户的登录状态。状态码表示失败的话,则给用户相应的登录失败提升。

2.登录状态下,用户转到另一子站:

1)通过本站cookie或session验证用户的登录状态:如验证通过,进入正常本站处理程序;否则用户中心验证用户的登录状态(发送ticket至用户验证中心),如验证通过,则对返回的用户信息进行本地的登录处理,否则表明用户为登录。

登出流程:

1)当前登出站清除本站的登录状态和本地保存的用户全站唯一的随机ID;

2)通过webservice接口,清除全站记录的全站唯一的随机ID。webservice接口会返回,登出其他已登录子站的JavaScript代码,本站输出此代码。

3)js代码访问相应网站接口登出脚本;

三、具体实现

1.站点部署在同一个服务器,且使用同一个二级域名

1)首先解决站点在客户端sessionid(存在cookie中)的共享问题。使用ini_set()函数即可指定cookie的域,如下:int_set('session.cookie_domain','.xxxx.com'); //设置服务器cookie的域,xxxx为公用二级域名

2)其次解决站点在服务端的session信息的共享。因为站点在用一服务器,所以生成的session文件是可以公用的,可以直接使用sessionid获取对应的session信息。

2.站点部署在不同的服务器,使用不同域名

1)首先解决客户端sessionid同步问题假设有三个站点,域名分别为aa.com,bb.com,cc.com。在a a.com上建立一个公用的登录入口login.php,三个网站的登录请求皆由此入口进入登录界面;在登录成功html提示页面中增加如下代码,利用iframe标签请求需要同步登录的站点:将返回的ticket同步至子站的cookie中;2)其次解决三个站点服务器端共享session的问题由于三个站点分布在不同的服务器,如果想要共享这些文件,又面临着跨域等一系列问题。所以我们转化思路,不使用文件保存session信息,而是把session信息保存至数据库中,这样只要获得session信息的sessionid,任何站点都可以访问相同的session信息。

参考链接:https://blog.csdn.net/youcijibi/article/details/78351627https://www.jb51.net/article/170272.htm
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学