单点登录SSO(Single Sign On)就是在多个系统共存的环境下,用户在一处登录 ,就不用在其他系统中登录,也就是用户的一次登录就可以得到其他所有系统的信任。
要点:
存储信任
验证信任
最简单实现SSO的方法就是Cookie,实现流程:
然而Cookie有如下缺点:
1、Cookie不安全
2、不能跨域免登
对于第一个问题一般采用Cookie加密,第二个问题是硬伤,其实是用Cookie的原理是把登录信息存储在客户端,要实现这种用flash也能实现,flash的shared object API就提供了存储能力。
以上方案就是把信任关系存储在单独的Sso系统中,简单说来就是从客户端移到了服务端,但其中有几个问题需要重点解决:
1、如何高效存储大量临时性的信任数据
2、如何防止信息传递过程中被篡改
3、如何让SSO系统信任登录系统和免登系统
对于第一个问题,一般采用类似于memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。
SSO单点登录
最新推荐文章于 2024-05-29 00:46:29 发布