php如何实现SSO登录

本文操作环境:Windows7系统、php7.1版、Dell G3电脑。

成都创新互联公司专注于企业成都营销网站建设、网站重做改版、临猗网站定制设计、自适应品牌网站建设、H5场景定制商城开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临猗等各大城市提供网站开发制作服务。

php如何实现SSO登录?

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登录
地址分享:http://www.shufengxianlan.com/qtweb/news28/250528.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联