Token令牌的原理及使用

Posted 清颖~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Token令牌的原理及使用相关的知识,希望对你有一定的参考价值。

1. Token的定义

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

token是有时效的,一段时间之后用户需要重新验证。我们也不一定需要等到token自动失效,token有撤回的操作,通过token revocataion可以使一个特定的token或是一组有相同认证的token无效。

2. 使用Token的目的

Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

3. Token 的优点

扩展性强,无状态、可扩展。
在客户端存储的Tokens是无状态的,并且能够被扩展。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。
如果我们将已验证的用户的信息保存在Session中,则每次请求都需要用户向已验证的服务器发送验证信息(称为Session亲和性)。用户量大时,可能会造成一些拥堵。
而使用tokens之后这些问题都迎刃而解,因为tokens自己hold住了用户的验证信息。

安全性强,非常适合用在 Web 应用或者移动应用上。Token 的中文有人翻译成 “令牌”,意思是:拿着这个令牌,才能过一些关卡。

4. Token一般用在三个地方

①防止表单重复提交
CSRF攻击(跨站点请求伪造)
③身份验证(单点登录)

5. Token的验证过程

(1) 客户端使用用户名跟密码请求登录 ;
(2) 服务端收到请求,去验证用户名与密码 ;
(3)验证成功后,服务端会签发一个 Token,再把这个 Token发送给客户端 ;
(4)客户端收到 Token 以后可以把它存储起来,比如放在Cookie、 Local Storage、Session Storage中;
(5)客户端每次向服务端请求资源的时候需要带着服务端签发的Token ;
(6)服务端收到请求,采用filter过滤器,校验客户端请求带着的 Token,校验成功则返回请求数据,校验失败则返回错误码。

token示意图:
token图(该图片来自脚本之家https://www.jb51.net/)

以上是关于Token令牌的原理及使用的主要内容,如果未能解决你的问题,请参考以下文章

token使用原理及使用

Pagetoken 原理

为啥 APP 要用 token 而不用

struts token令牌机制

什么是token及怎样生成token

什么是token及怎样生成token