单点登录和第三方登录的实现原理

单点登录:
      我们的单点登录系统,主要包含了登录验证,token校验 、注销、注册几大功能,单点登录系统提供了统一的登录和注册页面,提供了统一的登录token校验接口。单点登录的主要原理就是在登录成功以后,生成一个令牌,这个领跑要求每次登录唯一不可重复,我们就简单的用料一个随机的UUID,因为我们的系统在部署时,各个模块搜索通过nginx映射到痛同一个一级域名下的,cookie只要把他的作用域设置成一级域名,就可以在所有同一个一级以及域名下的模块中共享,所以我们把随机生成的token,以字符串“token”为key,放在cookie里边,然后用生成的token做key,用户对象信息转换成json字符串后,作为value,放到redis里边,都设置有效期30分钟;截到统一的登录页面,并把进入拦截到的URL放入cookie里边,方便登录成功以后,获取这个URL,进行原路径跳转,而不是每次登录都进入首页,提供用于的体验度。如果返回用户信息,则说明已经登录,模块创建的session,并放行url。统一校验token的接口的主要流程是,首先从cookie新设置一遍(这个是为了刷新有效期);这样就实现了多个模块只需要登录一次就可以的流程,还有就是注销,注销也是调用统一的注销接口,注销是需要首先从cookie中获取token,根据token删除redis中的用户信息,然后在删除cookie中的token。

 

第三方登录:
    第三方登录,我的理解就是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能,遵循一个Oauth2.0国际通用协议,允许用户在不提供用户名和密码的情况下,让第三方应用访问一些资源。使用第三方登录时,我们不需要用户再次输入用户名和密码,而是通过一个唯一的openID来进行授权登录,对于普通用户来说,如果能用QQ、微信、百度、新浪这些平台的账号一键注册登录各个平台,无疑会方便很多。对于我们的应用来说,通过授权,借助QQ,微信这些用户量比较大的第三方平台增强自己的知名度也是非常划算。我们的平台集成了,QQ,微信,百度,新浪四种第三方登录方式,实现的方式都是类似的。首先去各大开放平台进行注册成为开发者,并创建应用,填写回调地址,获取APPID(应用唯一的识别标志)、appkey(给应用分配的秘钥)、(名称可能不一样);下载api文档和sdk开发工具包;就可以开始发了。首先在我们网站的登录页面根据api集成第三方登录的logo图标。并给点击事件,当用户点击此图标时,发送请求,直接跳转到第三方平台的登录页面,第三方平台也会自动检测电脑是否有已登录的账号,登陆成功以后,第三方平台会自动调用我们传递的回调地址,并传递会一个code参数,我们拿到code以后,再次调用第三方api提供的接口,传入code,app_id、appkey等参数,调用获取access_token的接口(接口调用,有第三方提供的sdk包,直接导入jar包,根据api文档,传递参数调用方法,我们没必要太过关心第三方平台是用webservice接口或httpclient接口)。获取到access_token同时,会获取到openID,拿到openID以后就相当于拿到了登录授权。用openID去自己的用户表中查找是否与对应的用户,如果有,就直接查出用户信息,创建自己的session就可以了,如果没有,则新创建一个用户,吧openID放进去。如果还需要其他信息,可以通过openID再次调用第三方平台的接口获取用户信息,如果用户信息还是不够,可以创建完用户以后再次跳转一个页面,让用户不全信息。信息不全以后,创建session,完成登录,这样一个第三方登录几句完成了。
--------------------- 
作者:TMFRenWei 
来源:CSDN 
原文:https://blog.csdn.net/qq_42434712/article/details/81742335 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值