系统鉴权简述

一、什么是系统鉴权

指验证用户是否拥有访问系统的权利。

鉴权分两方面:

服务端用户鉴权,从业务数据层面对客户端进行鉴权

网络鉴权,从网络层面对客户端进行鉴权

二、有哪些系统鉴权

1、session-cookie

2、token(auth)  

3、OAuth(开放授权)

4、sign(签名鉴权)

三、token鉴权流程

1、客户端使用用户名和密码请求登录

2、服务端收到请求,验证登录是否成功

3、验证成功后,服务端会返回一个Token给客户端,反之,返回身份验证失败的信息

4、客户端收到Token后把Token用一种方式存储起来

5、客户端每次发起请求时都会将Token发给服务端

6、服务端收到请求后,验证Token的合法性,合法就返回客户端所需数据,反之,返回验证失败的信息

四、token鉴权特性

1、随机性:每次的token都是不一样的(也可以一样,根据算法确认)

2、不可预测性:没有规律,无法预测

3、时效性: 可以设置token的有效时间

4、可扩展性:只是一个model,扩展起来非常方便

五、sign签名分类

1、可逆签名 对称算法,公钥私钥(公钥加密,私钥解密) AES,DES

2、不可逆签名 不可逆算法,密钥一致 RSA的MD5

六、sign签名鉴权的特性

1、一次性的身份校验方式,常见于不同项目间的api通信

2、一般形式是通过 AppID/AccessKey/AppSecret 及签名算法针对通信数据生成签名

3、AccessKey作为公钥,AppSecret作为私钥,AppSecret不能放在网络上传输

4、接口数据推送时,会随带上AppID、AccessKey、Timestamp 及 Signature

5、在服务端同样留存着一份相同的 AppID/AccessKey/AppSecret 配置

6、服务端接受到请求后通过AppID对应出匹配的AppSecret,结合相同的签名算法计算签名,并与请求附带的签名做校验

7、时间戳可以防止恶意用户截取到签名后进行伪装请求,使签名只在一定时间范围内有效,过期后不能再请求

8、由于每次请求的数据包不同,签名结果不同,防止数据被篡改

七、可逆签名鉴权的流程

1、乙方将数据按固定规则连接成字符串

2、乙方使用公钥对字符串加密和appId一起传递给甲方

3、甲方根据乙方传递的appId获取对应的私钥

4、甲方根据密钥解密乙方传递的加密信息

5、甲方根据固定规则将解密后的字符串反序列化

八、不可逆签名鉴权流程

1、乙方将数据按固定规则连接成字符串

2、乙方使用密钥对字符串加密

3、乙方将加密后的信息作为一个字段并和appId及解密前的信息全部传给甲方

3、甲方根据乙方传递的appId获取对应的密钥

4、甲方先单独摘出加密字段,然后对其他信息使用密钥加密

5、将加密得到的字段和摘出的比较是否相等

你可能感兴趣的:(学习资料)