php如何实现单点登录

介绍

小编给大家分享一下php如何实现单点登录,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

php实现单点登录的原理是:首先将信任存储在客户端的cookie中,然后进一步验证饼干即可。为了高效存储大量临时性的信任数据,可以采用类似与memcached的分布式缓存的方案。

 php如何实现单点登录

单点登录SSO(单签署alt=" php如何实现单点登录">

不难发现以上的方案是把信任存储在客户端的饼干里,这种方法虽然实现方便但立马会让人质疑两个问题:

1,饼干不安全

2,不能跨域免登

对于第一个问题一般都是通过加密cookie来处理,第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用饼干,用闪光灯也能解决,flash的共享对象的API就提供了存储能力。

一般说来,大型系统会采取在服务端存储信任关系的做法,实现流程如下所示:

 php如何实现单点登录

以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

1,如何高效存储大量临时性的信任数据

2,如何防止信息传递过程被篡改

3,如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。

对于第二个问题,一般采取数字签名的方法,要么通过数字证书签的名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上令牌一起返回;

最后需免登的系统进行验证信任关系的时候,需把这传个令牌给SSO系统,SSO系统通过对令牌的验证就可以辨别信息是否被改过。

对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。

看完了这篇文章,相信你对php如何实现单点登录有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

php如何实现单点登录