单点登录(SSO)概述
概念:简单点说就是,用户只需要登录一次就可以访问所有相互信任的应用系统。
SSO体系结构:
1.认证中心
2.用户与账号系统、用户数据获取接口
3.客户端模块即授权验证(用户请求系统时,首先要对请求进行拦截)
4.令牌(token) 可以看作钥匙
SSO认证流程:工作原理和工作过程
1.浏览器发起访问系统的请求
2.客户端模块对用户请求进行拦截
3.验证token是否存在(不存在时重定向到登陆界面)
4.token存在时验证token是否有效(有效时可以访问系统)
5.token无效时重定向到登陆界面
6.进入登录界面,登录成功后进行授权(授权失败时提示授权失败)
7.授权成功则生成token令牌
8.生成token之后,再次返回到资源请求后重新再次进行验证
SSO相关核心技术:
1.HTTP协议的基础知识(无状态的协议)
HTTP处理的一般分为三个步骤:接收请求、处理请求、返回结果。
因为HTTP是无状态的,所以无法判断第二个问题中问的是什么多少钱一支。
由于以前浏览器的请求都是用于请求的静态的资源,为了保持请求的高效,所以将HTTP设为了无状态,但随着不断的发展,HTTP无状态的已经无法处理更多的问题了,所以就需要对会话的维持:
cookie:每次网络请求中,服务端返回给每个请求的唯一标识,每次发请求时会被传送【客户端】
session:服务端维护的那个map结构,存的是每个唯一标识以及对应的值【服务端】
为了避免缓存对测试结果的影响,我们可以使用隐身模式来进行试验(隐身窗口没有缓存)
2.如下进行实例的演示:
第一次请求浏览器端如下:
然后在服务端中:session.setAttribute('what','铅笔')
第二次请求浏览器端如下:
第二次请求服务端需要做的处理:(获取唯一标识,并返回结果)
String what = (String)session.getAttribute("what"); //获取存在服务端session中那么为what的唯一标识值
String resp = null;
if ("铅笔".equals(what)){
resp = "$1";
}
else {
resp = "i don't know"
}
同域下