blog20200610:鉴权策略及跨平台单点登录机制

一、鉴权策略

1. HTTP Basic Authentication

        适用于对安全性要求较低的系统,因为简单而被广泛支持。这是HTTP协议实现的基本认证方式,我们在浏览网页时,从浏览器正上方弹出的对话框要求我们输入账号密码,使用了这种认证方式。

        流程:

        ①客户端(例如Web浏览器):服务器,请把/family/son.jpg 图片传给我;

        ②服务器:客户端你好,这个资源在安全区family里,是受限资源,需要基本认证,请带上你的用户名和密码再来;

        ③客户端: 服务器,我已经按照你的要求,携带了相应的用户名和密码信息了,你看一下;如果客户端是浏览器,那么此时就会弹出一个弹窗,让用户输入用户名和密码;

        ⑧服务器:客户端你好,我已经校验了你的用户名和密码,是正确的,这是你要的资源。

        blog20200610:鉴权策略及跨平台单点登录机制_第1张图片

2. Token

token验证比较灵活,适用于大多数场景。

流程:

①客户端发送账号密码到服务端;

②服务端验证账号密码;

③如果验证通过,则服务端生成token,并且把token发送给客户端;

④客户端通过cookie或者其他方式将token存储起来;

⑤客户端所有的请求都需要带上token;

⑥服务端验证token的合法性,校验通过则返回资源,不通过则返回401状态码。

3. session+cookie

适用于用户量不大的情况,因为是存在内存中;不适用于负载均衡情况;容易受到跨站请求伪造的攻击。

利用服务器端session和客户端的cookie实现认证,在服务器端创建一个session,将同一个客户端的请求都维护在各自session中,每当请求到达服务器端的时候,先去查询该客户端有没有在服务器端创建seesion,如果有则已经认证成功。
流程:
①服务器在接受客户端首次访问时创建并保存session,在响应头中添加由session生成的唯一标识字符串sid;
②客户端收到请求响应时解析响应头sid,然后保存在本地cookie中,客户端在下次请求头中会带上该域名下的cookie信息;
③服务器在接受客户端请求时解析请求头cookie中的sid,然后根据sid查询保存的该客户端的session,从而认证请求。
 

二、基于鉴权策略的单点登录

日常业务可能存在一种需要跨系统单点登录并且传输业务数据的场景,参考token验证方式和linux的ssh鉴权方式,设计了一种跨系统单点登录鉴权策略。

流程:

①使用RSA加密方式,将A系统的业务数据公钥加密,发送给B系统;B系统解密后保存数据并生成唯一标识返回A系统;

②A系统保存标识,发送公钥给B系统;

③B系统验证公钥是否在authorized_keys列表中,如果在,则生成token,公钥加密后返回A系统;

④A系统私钥解密token后,将token放入请求头,并带上刚才保存的标识,请求B系统的目标url;

④B系统接到请求后验证token,并根据标识查询业务数据,然后渲染页面。

blog20200610:鉴权策略及跨平台单点登录机制_第2张图片

你可能感兴趣的:(java)