欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Cookie/会话/令牌 仍有困惑?-令牌程序

最编程 2024-04-01 09:32:52
...

Token是令牌的意思,由服务端生成并发放给客户端,是一种具有时效性的验证身份的手段。

Token避免了Session机制带来的海量信息存储问题,也避免了Cookie机制的一些安全性问题,在现代移动互联网场景、跨域访问等场景有广泛的用途。

4.1 简单的交互流程

  • 客户端将用户的账号和密码提交给服务器
  • 服务器对其进行校验,通过则生成一个token值返回给客户端,作为后续的请求交互身份令牌
  • 客户端拿到服务端返回的token值后,可将其保存在本地,以后每次请求服务器时都携带该token,提交给服务器进行身份校验
  • 服务器接收到请求后,解析关键信息,再根据相同的加密算法、密钥、用户参数生成sign与客户端的sign进行对比,一致则通过,否则拒绝服务
  • 验证通过之后,服务端就可以根据该Token中的uid获取对应的用户信息,进行业务请求的响应

4.2 Token的设计思想

以JSON Web Token(JWT)为例,Token主要由3部分组成:

  • Header头部信息
    记录了使用的加密算法信息
  • Payload 净荷信息
    记录了用户信息和过期时间等
  • Signature 签名信息
    根据header中的加密算法和payload中的用户信息以及密钥key来生成,是服务端验证服务端的重要依据

header和payload的信息不做加密,只做一般的base64编码,服务端收到token后剥离出header和payload获取算法、用户、过期时间等信息,然后根据自己的加密密钥来生成sign,并与客户端传来的sign进行一致性对比,来确定客户端的身份合法性。

这样就实现了用CPU加解密的时间换取存储空间,同时服务端密钥的重要性就显而易见,一旦泄露整个机制就崩塌了,这个时候就需要考虑HTTPS了。

4.3 Token方案的特点

  • Token可以跨站共享,实现单点登录
  • Token机制无需太多存储空间,Token包含了用户的信息,只需在客户端存储状态信息即可,对于服务端的扩展性很好
  • Token机制的安全性依赖于服务端加密算法和密钥的安全性
  • Token机制也不是万金油