跨服务器身份校验的脑洞

2016年10月09日 陈鑫杰

一个吃吃喝喝玩玩的十一已经过去了,是深挖脑洞的时候了。
除了系统集成,单点登录之外,还有什么方法。
能简单且安全的实现服务器与服务器之间的身份校验。


仿微信校验模式

  1. token: 服务器间相互约定的密钥
  2. userNo: 用户唯一编号
  3. timestrap: 当前时间戳

如何使用

  1. 将 token,userNo,timestrap 按照约定顺序连接成字符串(str),并 MD5 加密。
  2. 将 str 存入 Redis 缓存中,并设置超时时间。
  3. 跨服务器请求带上 userNo,timestrap,str 参数。
  4. 被跨域服务器,先校验 timestrap 是否满足要求(5min/sec内)。
  5. 如果 timestrap 满足要求,那么将请求中的 userNo,timestrap,token(约定密钥)进行相同的加密处理,得到密文(str2)。
  6. Redis 判断 str2 是否存在,如果存在,那么身份验证通过,并从 Reids 中删除;如果不存在,那么身份校验失败。

优缺

  1. 优点:相对安全
  2. 缺点:每次请求都需要重新生成密文,相对麻烦。

IP 白名单

  1. 数据库设置可访问系统的白名单

如何使用

  1. 拦截所有请求
  2. 匹配 request 中的 HTTP 来源 IP

优缺

  1. 优点:相对简单
  2. 缺点:HTTP 来源容易被伪装成受信任IP

路由限制

限制被访问服务器外部访问,只提供服务器之间的相互访问。。。
好像可行,但没有实际意义。


服务器间约定 cookie。。。
简单,但不安全。


普通 session 是无法跨服务器存在的。
共享 session。。。
同 cookie 简单,但不安全。

(转载本站文章请注明作者和出处 FoamValue – www.foamvalue.com ——=== 访问 404页面 寻找遗失儿童。 ===——