一个吃吃喝喝玩玩的十一已经过去了,是深挖脑洞的时候了。
除了系统集成,单点登录之外,还有什么方法。
能简单且安全的实现服务器与服务器之间的身份校验。
仿微信校验模式
- token: 服务器间相互约定的密钥
- userNo: 用户唯一编号
- timestrap: 当前时间戳
如何使用
- 将 token,userNo,timestrap 按照约定顺序连接成字符串(str),并 MD5 加密。
- 将 str 存入 Redis 缓存中,并设置超时时间。
- 跨服务器请求带上 userNo,timestrap,str 参数。
- 被跨域服务器,先校验 timestrap 是否满足要求(5min/sec内)。
- 如果 timestrap 满足要求,那么将请求中的 userNo,timestrap,token(约定密钥)进行相同的加密处理,得到密文(str2)。
- Redis 判断 str2 是否存在,如果存在,那么身份验证通过,并从 Reids 中删除;如果不存在,那么身份校验失败。
优缺
- 优点:相对安全
- 缺点:每次请求都需要重新生成密文,相对麻烦。
IP 白名单
- 数据库设置可访问系统的白名单
如何使用
- 拦截所有请求
- 匹配 request 中的 HTTP 来源 IP
优缺
- 优点:相对简单
- 缺点:HTTP 来源容易被伪装成受信任IP
路由限制
限制被访问服务器外部访问,只提供服务器之间的相互访问。。。
好像可行,但没有实际意义。
cookie
服务器间约定 cookie。。。
简单,但不安全。
session + cookie
普通 session 是无法跨服务器存在的。
共享 session。。。
同 cookie 简单,但不安全。