星空网 > 软件开发 > ASP.net

单点登录 SSO 的实现原理

单点登录 SSO(Single Sign On),简单说,就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

  • 存储信任
  • 验证信任

只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。

最简单实现 SSO 的方法就是用 Cookie,实现流程如下所示:

单点登录 SSO 的实现原理

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

  • Cookie 不安全
  • 不能跨域免登

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

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

单点登录 SSO 的实现原理

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

  • 如何高效存储大量临时性的信任数据
  • 如何防止信息传递过程被篡改
  • 如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问;对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上 token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。




原标题:单点登录 SSO 的实现原理

关键词:登录

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊发布店铺新绩效!违规将可能封店:https://www.kjdsnews.com/a/558663.html
90后外贸新势力组团出海,天猫淘宝海外成就更多出海可能:https://www.kjdsnews.com/a/558664.html
TikTok对接Shopify,TikTok这些选品坑你知道吗?:https://www.kjdsnews.com/a/558665.html
旺季将至,有什么要准备的吗?最全旺季指南请查收!:https://www.kjdsnews.com/a/558666.html
福利!Facebook开户注册运营干货包免费领:https://www.kjdsnews.com/a/558667.html
亚马逊产品外箱尺寸可以从哪些角度节约成本?:https://www.kjdsnews.com/a/558668.html
37号文今后是否会更新?一文详解关键信息 :https://www.kjdsnews.com/a/1836441.html
探讨内地人开设香港账户的可行性 :https://www.kjdsnews.com/a/1836442.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流