token详解

简介: token详解

token详解


前言

本篇博客主要从什么是token?为什么要使用token?如何使用token?项目实例这几个方面讲解token,通过本篇博客能够对token能够有更深入的理解,并且有思路应用在具体项目中。

什么是token?

Token 在计算机身份认证中是令牌的意思,表示执行某些操作的权利的对象。通俗的意思是token是身份的象征,有了这个token了你就能有权利做些什么事。


token是在服务器端产生,如果前端使用用户名密码向服务端请求认证,服务端认证成功,那么服务端就会返回Token给前端。前端可以在每次请求的时候带上Token来证明自己的合法地位。

为什么要使用token?

  1. 从上面token的定义中我们可以看出token可以进行用户身份鉴权认证。
  2. 提高安全性:Token可以防止未经授权的用户访问受限资源。使用Token进行身份验证和授权可以避免传统的基于Cookie和Session的身份验证方式带来的一些安全风险,例如CSRF攻击和会话劫持等。

  3. 减少服务器负担:使用Token可以减轻服务器的负担,因为服务器无需保存用户的身份信息和状态信息。相反,每次请求中都包含了Token,服务器只需要对Token进行验证即可判断用户的身份和权限。

  4. 提高性能:使用Token可以减少网络传输和服务器的负载,因为Token可以被存储在客户端,客户端在每次请求时将Token带到服务器,而不需要每次请求都要传递身份信息和状态信息。


那么如何使用token呢?

使用Token进行身份验证和授权的过程

  1. 用户提供用户名和密码进行登录。
  2. 服务器验证用户名和密码的正确性,如果验证通过,则生成一个Token,并将Token返回给客户端。
  3. 客户端保存Token,并在以后的每次请求中都将Token携带到服务器。
  4. 服务器在接收到请求时,会对Token进行验证,以确定该请求是否被授权。
  5. 如果Token验证通过,则服务器处理请求,并返回所请求的资源或操作的结果。
  6. 如果Token验证失败,则服务器返回一个未授权的错误响应,客户端需要重新进行身份验证或者刷新Token。

具体步骤

  1. 生成Token:服务器在用户登录成功后,会生成一个Token,并返回给客户端。Token一般是一串加密的字符串,包含用户的身份信息和权限信息等。
  2. 保存Token:客户端在接收到Token后,需要将其保存在本地,以便后续的请求中携带Token。
  3. 携带Token:客户端在每次请求时,需要在请求头中携带Token,以便服务器进行验证。
  4. 验证Token:服务器在接收到请求时,需要从请求头中获取Token,并进行验证。如果Token验证通过,则处理请求,否则返回错误响应。
  5. 刷新Token:为了避免Token被恶意攻击或过期,客户端需要定期刷新Token,可以在Token即将过期时,向服务器发送刷新Token的请求,以获得新的Token。

项目上如何运用的token

列举的是目前公司使用token进行用户身份鉴权的大致流程:



c689d384f28341ff9e7cc3b56b19e997.png

token过期了什么办?

Token续活

目前项目中的Token续活方式,当前在redis设置token的过期时间为24分钟(根据项目业务的使用情况进行制定的),从前端来的每一次请求都在网关处对token进行续活,只要这个token还没有过期就会一直更新它的过期时间。如果某一次来的http请求间隔时间超过了24分钟,那么这个时候token已经过期了,无法进行续活。前端会重定向到登陆页面提示用户进行登陆。


总结

在使用Token进行身份验证和授权时,Token通常是存储在HTTP请求头中的,如果使用HTTP协议进行通信,那么Token就会被以明文的形式传输,容易被窃取或篡改,从而导致安全风险。而使用HTTPS协议,可以保证Token在传输过程中被加密,并且客户端和服务器的身份都经过了身份验证,从而有效地防止了中间人攻击和窃听等安全风险。


HTTPS协议可以通过使用SSL或TLS等安全协议,在客户端和服务器之间建立一条安全的加密通道,使得通信过程中的数据在传输过程中被加密,从而保证数据的机密性。同时,HTTPS协议还可以使用数字证书进行身份验证,确保客户端和服务器的身份都是可信的,从而保证身份的合法性和完整性。


升华

多角度看问题,多个维度看问题能够更加深入的理解和学习到该知识点。例如5w2h的方式。


目录
相关文章
|
JSON Unix 中间件
gin 基于JWT实现token令牌功能
token 我的理解是一种凭证,客户端请求时携带此凭证才能有效访问需要验证凭证的服务端接口,而且token可以加密携带客户端的一些信息,比如基本的信息是有效期,生效日期,可以看作是令牌。
3962 0
|
9月前
|
Linux 数据安全/隐私保护
Token如何生成?
Token如何生成?
265 0
|
10月前
|
存储 负载均衡 安全
浅谈Token、Cookie和Session
浅谈Token、Cookie和Session
77 0
|
10月前
|
存储 算法 前端开发
如何生成以及校验token
如何生成以及校验token
|
12月前
|
缓存 前端开发 算法
深入理解token
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位
515 0
|
算法 中间件
koa如何进行token设置和进行token过期验证
两个参数分别是签名算法和自定义的签名Key(盐)。签名key可以byte[] 、String及Key的形式传入。前两种形式均存入builder的keyBytes属性,后一种形式存入builder的key属性。如果是第二种(及String类型)的key,则将其进行base64解码获得byte[] 。
|
前端开发 算法 网络安全
深入理解Token
深入理解Token
913 0
深入理解Token
|
存储 算法 Shell
登录凭证(cookie+session和Token令牌)
登录凭证(cookie+session和Token令牌)
289 0
登录凭证(cookie+session和Token令牌)
|
JSON 安全 Java
Jwt和Token
Jwt和Token的认识
1412 0
Jwt和Token
|
开发工具
获取Token
获取Token
2691 0