在做零信任架构时候,是以身份验证为基础的,参考了网上的Token服务器身份验证。

token实现用户监控 token管理_网络安全

 

组件图

token实现用户监控 token管理_服务端_02

 

拦截验证

token实现用户监控 token管理_数据_03

 

 

生成Token

Token管理者负责根据用户的数据生成token和摘要,摘要用来给APP端刷新token用

生成token的过程中,ua的充作干扰码。没有相同的ua,就无法解析生成的token字符串。如果客户端是混合开发的模式,生成token和使用token的代理可能不同(比如一个是h5,一个是原生),ua就会不同,token就无法成功的使用。可以选择其他的客户端数据作为干扰码,注意考虑下面的问题:

不同的客户端,干扰码应该不同

干扰码的很大一个作用是防冒充,如果选择的充当干扰码的客户端数据没有区分性,就达不到效果。

选择充当干扰码的数据,在哪些情况下会变化?这些情况是否合理?

比如干扰码数据中含有app的版本号,那么app版本升级就会导致干扰码变化。服务端根据新的干扰码,无法解析旧的token,此时用户必须重新登录。这种情况是合理的吗?如果不合理,干扰码中就不应该含有app的版本号。

token实现用户监控 token管理_token实现用户监控_04

 

token刷新

当token过期,用户需要刷新token。

基于 Token 的身份验证方法

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

客户端使用用户名跟密码请求登录

服务端收到请求,去验证用户名与密码

验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里

客户端每次 向服务端请求资源的时候需要带着服务端签发的 Token

服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据