知乐空间

简单理解token机制(token是什么意思)

令牌是什么意思(简单理解令牌机制)

在简单了解cookie/会话机制的文章中,简要阐述了cookie和会话的原理。本文将简要解释另一个与cookie/session同样重要的技术术语:token。

什么是token?

Token的意思是“令牌”,它是由服务器生成的字符串,用作客户端请求的标识符。

当用户第一次登录时,服务器生成一个令牌并将其返回给客户端。将来,客户端只需要携带这个令牌来请求数据,而不必再次携带用户名和密码。

简单令牌的组成;Uid(用户的唯一身份)、time(当前时间的时间戳)和sign(签名的前几个数字,token)通过哈希算法压缩成一定长度的十六进制字符串。以防止令牌泄漏)。

身份认证概述

因为HTTP是无状态协议,所以它不知道谁访问了我们的应用程序。在这里,用户被视为客户端,并且客户端已经通过了用户名和密码的身份验证,但是下次该客户端发送请求时,必须再次进行验证。

一般的解决方法是,当用户请求登录时,如果没有问题,就会在服务器上生成一条记录,记录中可以描述登录的用户,然后将这条记录的id发送给客户端,客户端收到后会将这个id存储在cookie中,下次用户再次向服务器发送请求时,可以将这个cookie随身携带,这样服务器就会验证cookie中的信息。看看能不能在服务器上找到对应的记录。如果是,则表示用户通过了认证,然后用户请求的数据返回给客户端。

上面描述的过程是使用session,该id值是sessionid。我们需要将为用户生成的会话存储在服务器中。这些会话将存储在内存、磁盘或数据库中。

基于令牌机制的身份认证

使用令牌机制的身份验证方法不需要在服务器端存储用户的登录记录。大致过程:

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

服务器接收请求并验证用户名和密码。

验证成功后,服务器将生成一个令牌,然后将其发送给客户端。

接收到令牌后,客户端存储它,它可以放在cookie或本地存储中。

每次客户端向服务器发送请求时,都需要携带服务器发送的令牌。

服务器接收请求,然后验证客户端请求是否携带令牌。如果验证成功,它会将请求的数据返回给客户端。

使用令牌机制进行登录身份验证有以下几种方式:

A.使用设备的mac地址作为令牌

客户端:客户端在登录时获取设备的mac地址,并将其作为参数传递给服务器。

服务器:接收到这个参数后,服务器使用一个变量来接收它,将它作为令牌保存在数据库中,并将令牌设置到会话中。每次客户端请求时,都必须对其进行统一拦截,并将客户端传递的令牌与服务器会话中的令牌进行比较。如果令牌相同,则登录成功,如果令牌不同,则拒绝登录。

这样,客户端和服务器统一了唯一标识,保证了每台设备都有唯一标识。缺点是服务器需要保存mac地址;优点是客户端不需要重新登录,但是登录一次就可以一直使用,超时的问题由服务器处理。

B.使用sessionid作为标记

客户端:客户端使用用户名和密码登录。

服务器:收到用户名和密码后,检查。如果正确,本地获取的sessionid将作为令牌返回给客户端。客户端只需要在将来带来请求的数据。

这种方法的优点是方便,不需要存储数据。缺点是当会话到期时,客户端必须再次登录才能请求数据。

当然,对于一些保密性较高的应用,设备的mac地址和用户名、密码可以通过两种方式结合使用作为认证的令牌。

使用令牌机制进行身份认证

当用户登录APP时,APP会将加密后的用户名和密码发送给服务器,服务器会对用户名和密码进行验证。如果验证成功,它将生成相应数量的字符作为令牌存储在服务器中,并将令牌返回给APP。

当应用程序将来再次请求时,令牌应该随身携带,无论它需要验证到哪里。然后,服务器验证令牌,成功返回所需结果,如果失败,则返回错误消息,以便用户可以再次登录。其中,服务器会为令牌设置一个到期日期,每次APP请求时都会验证令牌和到期日期。

令牌存储

Token可以存储在数据库中,但是查询token可能会花费太长时间,可能会导致token丢失(实际上,如果token丢失了,重新认证一个就好,但是不要太频繁地丢失,如果什么都没发生,也不要让用户认证)。

为了避免查询时间过长,可以将token放入内存。这样的话,查询速度绝对不是问题,也不用太担心占用内存。即使令牌是32位的字符串,应用程序的用户数量也在一百万或一千万的数量级,并不占网络中存储的太多信息资源。

令牌加密

令牌容易泄露。如果不加密,很容易被恶意复制用于登录。加密方法通常包括:

存储令牌时将其存储在对称加密中,使用时将其解密。

文章开头提到的签名符号:请求URL、时间戳和令牌的通过算法进行合并和加密。

最好将这两种方法结合起来。

还有一点就是令牌在网络层面以明文形式传输是非常危险的,所以必须使用HTTPS协议。

摘要

以上是用户认证过程中令牌的简要总结。希望没有技术背景的产品经理,在和自己的开发兄弟交流的时候,不要被这些技术术语给卡住了。

作者:刘念,互联网产品设计师,4年互联网产品设计经验。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。

留言与评论(共有 0 条评论)
验证码: