继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

SSO-登陆登出流程接口

尘瀚
关注TA
已关注
手记 7
粉丝 20
获赞 175

需要做的事情:A,搭建认证中心 B,改造系统的登录登出部分 C,让AB进行交互

三大核心问题:
1.登录令牌tocken的实现
系统将用户重定向到认证中心并登录后,认证中心把验证通过的信息以令牌的方式告诉系统。认证中心会记录本次通过认证中心的认证所涉及的基本信息,生成一个tocken令牌。认证中心会将tocken以url参数的形式传递给应用系统。而且由于经过客户端浏览器,所以tocken令牌的安全性很重要。
因此tocken令牌要满足三个条件:
一,唯一性:tocken代表某一系统某一用户的某一次成功登录,直接用java工具类 java util包工具生成一个32位唯一串。
String tocken = UUID.randomUUID().toString();
二,同时定义一个javabean,TockenInfo来唯一保存tocken所代表的具体内容
tocken和tockeninfo应为<key,value>键值对的形式,后续应用系统中通过tocken获取这个tockeninfo里面的用户相关信息。
三,tocken有效期不能过长,使用一次就报废。即:取完则删。

2.全局会话,局部会话
用户登录成功后,浏览器用户与认证中心会建立全局会话,浏览器用户与访问应用系统会建立局部会话。
为简便使用可以用web服务器提供的session功能来实现。
我们需要sessionid来访问这个session。认证中心的请求不是来自浏览器,而是来自某个系统。所以需要在应用中自己维护sessionid与session之间的关系。可以通过Map,有需要的时候通过sessionid找到对应的session。同时借助web容器提供的seesion事件监听功能,用程序来维护这种关系。

3.应用系统和认证中心之间的通信。
SSO实现流程中,应用系统和认证中心需要通信,如应用系统需向认证中心鉴定tocken真伪,应用系统同志认证中心登出,认证中心通知所有应用系统登出。这是Server之间的通信,可以使用HTTP进行通信,返回消息以及应答模式都采用JSON格式
java中的net包提供这种服务器的能力。但appache有一个强大的开源框架,httpclient来实现应用系统和认证中心之间的直接通信。
JSON和javaban之间的转换有两种方式,一个是json-lib,另外就是JackSon,jackSon效率高,依赖包少,社区活跃

主要接口定义:
server:
1.接口名称: /page/login
入参:returnURL(可选)
返回:1.显示登录页面 2.产生临时认证tocken,重定回会当前系统
说明:
a:来自应用的请求:returnURL需加上。用以向认证中心标识是哪个应用系统,以及返回该应
用系统的url。如果用户没登陆,显示登录界面。如果已登录,产生临时tocken,并返回应用系
统。
b.直接向认证中心登录。此时没有returnURL参数。直接跳登录界面
2.接口名称:/auth/login
入参:username password returnURL(可选)
返回:1.产生临时令牌tocken,重定向回该系统 2.返回认证中心首页,提示已登录
说明:
处理浏览器用户登录请求。
a:如果带有returnURL参数,将产生临时认证令牌tocken,并携带此tocken重定向回系统。
b:如果没有带returnURL参数,表示是直接从认证中心登录的,认证通过后回认证中心首页。
3.接口名称:/auth/verify
入参:tocken localId
返回:Json格式消息{ret:结果代码,msg:结果说明,userId:用户id,userName:用户登录名,
globalId:全局会话id}
说明:
认证应用系统的tocken是否有效,如有效,应用系统向认证中心注册,同时认证中心会返回应用系
统的登录相关信息。
4.接口名:/auth/logout
入参:globalid,全局会话id
返回:跳认证中心首页
说明:
登出接口处理两种情况
a:直接从认证中心登出(无gid)直接从认证中心注销。
b:从应用中来(有gid) 取消全局登录会话,根据注册的已登录应用通知他们进行登出操作。

client
1.接口名称:/auth/check
入参:tocken returnURL
返回:验证成功,重定向returnURL 验证失败,重定向认证中心
说明:
接收来自认证中心携带临时tocken的重定向,向认证中心auth/verify 验证临时tocken的有效性。
如有效,建立本地会话,根据returnURL返回浏览器的实际请求。如验证失败,重定向到认证中心
登录界面。
2.接口名称:/auth/logout
入参:localid
返回:首页
说明:
处理两种情况:
a:浏览器本应用接口直接发起登出请求,应用会消除本地会话,调用认证服务器的/auth/logout接
口,通知认证中心消除全局会话,以及其他已登录应用的本地会话。
b:如果是从认证中西来的请求,此时带有localid参数,接口直接删除本地会话

接口流程如图所示

参考:http://www.imooc.com/article/3564

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP