这篇文章给大家分享的是有关php怎么实现SSO登录的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
站在用户的角度思考问题,与客户深入沟通,找到汕头网站设计与汕头网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖汕头地区。
php实现SSO登录的方法:1、用户进入登录页生成自定义SID,写入redis和cookie;2、在业务的BaseController的构造函数,写一个更新redis的操作;3、js构造跳转事件,然后服务端根据SID查看该用户存redis。
本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。
SSO单点登录设计及PHP实现
建议先熟悉单点登录SSO相关概念。
1、SSO:单点登录,一次登录,所有相关系统均可以进入,无需重复登录
2、实现方案:共享【顶级域名】cookie里的S【ID】 + 【跨域SID】
3、弃用PHP的session,将用户信息存于redis
4、每次用户合法操作,在业务的BaseController的构造函数,写一个更新redis的操作,均更新redis存放用户登录态的expireTime -- 目的模拟session过期
5、具体SSO实现单点登录:(弃用PHPsessionId) -- 认证用户登录api,统一放在sso服务器,其他登录页面都调用该接口。
1)SSO单点登录认证:用户进入登录页生成自定义SID,写入redis和cookie;提交账户密码,调SSO认证api通过,SSO需要将用户和cookie里面SID绑定,(LoginAction/ssologin/321行:api::get里面)
本地服务器生成token(2个都是自定义的字段和规则)存于redis,有效期建议30分钟,
2)在业务的BaseController的构造函数,写一个更新redis的操作,有业务来就更新对应SID和token有效期(即30分钟无操作,登录态过期), -- 目的模拟session过期
3)SID存于cookie域名必须是顶级域名如【.example.com】,cookie有效期建议一个月;
4)用户从刚才登录的域名网页,直接点击其他子域名,a链接不需要带明文SID或token,因为cookie会自己带上SID,服务器根据cookie里面的SID,去SSO调认证接口看SID对应redis的数据是否有效;
6、跨域登录,比如我想登录不是【.example.com】下的域名如:erji.mogo.com,但是我用的是同一个SSO认证体系,咋办?
还在是刚才登录的域名网页,js构造一个跳转事件,跳转的url?&SID=xxx就行了,可以用jQuery.cookie.js 从cookie拿到SID,然后服务端也是根据SID查看该用户存redis数据是否过期。
感谢各位的阅读!关于“php怎么实现SSO登录”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
本文题目:php怎么实现SSO登录
当前网址:http://scgulin.cn/article/gssjhc.html