第 61 题:介绍下如何实现 token 加密

发布于 2022-07-13 20:15:38 字数 53 浏览 143 评论 14

Token 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

我乃一代侩神 2022-05-04 13:56:32

传统身份验证的方法
HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。

解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次这个用户再向服务端发送请求的时候,可以带着这个 Cookie ,这样服务端会验证一个这个 Cookie 里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

上面说的就是 Session,我们需要在服务端存储为登录的用户生成的 Session ,这些 Session 可能会存储在内存,磁盘,或者数据库里。我们可能需要在服务端定期的去清理过期的 Session 。

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

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
七分※倦醒 2022-05-04 13:56:19

token为什么要加密?

生活了然无味 2022-05-04 13:56:07

这篇应该主要问的是token是怎么生成的:
加密看设计架构了,
一类存储token关联用户使用不可逆加密算法,像md5之类的
二类token内包含用户基础信息则要采用可逆算法,各种可解密算法都可以

认证方案:
JWT认证token是无法做到自注销的
session内存相关开销太大,不适合分布式,还有CSRF的问题

你在我安 2022-05-04 13:55:40

后端 使用一个固定秘钥加密用户标识(uid)+创建token时间(ttl) 通过对称加密(收到客户端提交的token需要解开所有使用堆成加密)的加密算法生成一个字符串,这个字符串就是一个token,每次客户端请求都将token放到请求头header中(body参数也可以,无所谓在哪),服务器端收到该请求并使用相同的秘钥解开token,查看token是否过期,也可以通过token中的uid和其他参数比较验证用户的合法性(例如:请求参数中也有一个uid必填参数,这样就可以对比两个uid是否相同,如果相同则说明是同一个人,如果单纯的只验证token,只要另外的用户拿到了没过期的token就可以伪造用户身份进行服务器端api的请求)

单身情人 2022-05-04 13:53:02

后端通过随机数加签名生成一个token,前端拿到token后通过拦截器在接口调用时添加token。

清风不识月 2022-05-04 13:47:59

@zeroone001 不是很清楚的知道这道题答案是啥了。。。

无需解释 2022-05-04 13:40:54
  1. token加密主要是来做客户端和服务端的用户信息校验
  2. 服务端生成随机数,用户登录会将随机数告知客户端,并自己在缓存空间保留一份,每次客户端发送> token,服务端会对比缓存空间是否有此token,来判断用户是否存在
  3. 当确定token存在,进行下一步校验...,最后通过token拿取客户端需要的信息
  4. 加密方法:JWT,AES, DES... 或者直接就是随机字符串
和影子一齐双人舞 2022-05-04 12:47:06

token 加密方式:

  • 服务器通过私钥对一部分信息进行加密生成签名,并将签名和数据拼接在一起作为 token 的一部分。例如 JWT。
  • 使用客户端的 UA 或其他数据作为干扰码对 token 进行加密。

相关参考文章:

感性 2022-05-04 12:18:08

jwt举例

  1. 需要一个secret(随机数)
  2. 后端利用secret和加密算法(如:HMAC-SHA256)对payload(如账号密码)生成一个字符串(token),返回前端
  3. 前端每次request在header中带上token
  4. 后端用同样的算法解密

这边也是这么做的,后端根据token来查权限和是否登录以及失效等

奈何桥上唱咆哮 2022-05-04 11:41:11

jwt举例

  1. 需要一个secret(随机数)
  2. 后端利用secret和加密算法(如:HMAC-SHA256)对payload(如账号密码)生成一个字符串(token),返回前端
  3. 前端每次request在header中带上token
  4. 后端用同样的算法解密
千纸鹤 2022-05-04 09:49:37

加点随机数算法,后台配合对应解密算法。

儭儭莪哋寶赑 2022-05-03 22:03:59

这个题目是问: 生成token的方法,比如 JWT,还是说利用加密算法,比如对称加密或者非对称加密 加密生成后的token ?

~没有更多了~

关于作者

箹锭⒈辈孓

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文