`

单向免登录的实现-疑点带解决

阅读更多

什么是免登陆?

免登录也就是平常别人说的免登。比如某某网站登录后可以直接免登到另外某某网站。打个比方,淘宝买好物品下好订单付款时,直接跳转到支付宝的付款页面直接进行付款,而不用再登录支付宝,这个过程就是网站间功能通过免登陆打通了。

一句话概括就是用户在A网站登录后,B网站信任用户在A网站的登录状态,并认为(映射)用户也登录了B网站。

 

免登的实现原理

免登的实现,按照不同系统间的拓扑关系可以有很多不同的实现方式。

如果多个系统,两两间都是需要功能免登打通,依赖关系呈网状,那么可以使用SSO单点登录的方式进行免登。

如果系统间功能免登的依赖关系呈现单项依赖性,那么可以通过通过Token验证技术做到单项免登。

 

单项免登实现步骤

1,创建一个登录控制中心。

登录控制中心提供两个主要的功能,一个是根据源网站的登录请求信息生成目标网站的TVS url(Token Validate Service)及Token,以及为了防止篡改的摘要信息,并将生成的Token及请求信息进行缓存。另一个功能是对目标网站的TVS服务提供Token验证功能,验证通过后返回目标网站来源网站的登录信息表示,比如源网站对应登录的LoginId,那么目标网站就可以根据这个LoginId找到本地用户体系中所对应的登录信息进行本地登录及授权操作了。

 

具体步骤:

1,用户浏览器请求源网站免登目标网站功能的免登链接代理。

2,源网站免登代理接受到请求后,判断用户是否在本网站登录,如果没有登录那么跳转到登录页面让用户登录。如果用户已经登录,那么向登录控制中心提交当前登录用户LoginId、网站SiteId、目标网站TargetUrl、来源页面Ref和客户端IP。

3,免登控制中心首先验证传过来的TargetUrl,是否在已经配置的白名单中,如果存在则找到此TargetURL对应的TVS URL, 然后再随机生成一个不重复的Token,并将此Token和进行一个摘要Sign,然后就把此TVSURl带上Token和摘要Sign信息回传给源网站。

4,源网站重定向用户浏览器到tvsurl,用户浏览器访问目标网站的tvsurl。

5,目标网站tvsurl接收到请求后,通过调用登录控制中心的token验证服务对token、sign、siteId、IP、ref进行校验,如果在校验通后获取源网站对应的登录LoginId,如果此LoginId在目标网站中存在用户映射,那么找到目标网站本地对应的LoginId,并进行登录操作(和普通登录一样,知识因为是已经校验了验证信息,所以不用密码了)记录到浏览器Cookie中。再重定向到源网站带入的targetURL。

6,至此,即完成了从源网站到目标网站的针对制定功能targetURL的免登打通了。

 

注意点:

由于上述6部操作完成后,目标网站对应源网站LoginId的本地用户已经登录状态了,如果此时用户浏览器保持目标网站功能页面不关闭,而源网站登出并换了一个登录用户时,源网站与目标网站两边loginId其实是不对应的,且源网站发起的针对目标网站的功能调用可能会导致两个不对应用户间数据产生不一致,如源网站B用户改了目标网站A用户的信息或关键数据等。

 

对于这种问题如何避免?  

类图

 

序列图

 
 

  • 大小: 86.8 KB
  • 大小: 34.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics