机制怎么理解

机制怎么理解,第1张

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

在《简单理解cookie/session机制》一文中,简要说明了cookie和session的原理。本文将简要解释另一个与cookie/session同样重要的技术术语:token。

什么是token

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

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

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

身份认证概述

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

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

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

基于token机制的身份认证

采用令牌机制的认证方式,不需要在服务器端存储用户的登录记录。大致过程:

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

  • 服务器收到验证用户名和密码的请求。

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

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

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

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

    使用令牌机制进行登录认证,有以下几种方式:

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

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

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

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

    B.使用sessionid作为令牌

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

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

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

    当然,对于一些保密性较高的应用,可以使用设备的mac地址和用户名密码作为令牌进行认证。

    APP利用token机制进行身份认证

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

    以后APP再次请求时,需要验证的地方就取令牌,然后服务器端验证令牌,成功返回所需结果,失败则返回错误信息,让用户重新登录。其中,服务器会为令牌设置一个截止日期,并在每次APP请求时验证令牌和截止日期。

    token的存储

    Token可以存储在数据库中,但是查询token的时间可能太长,导致token丢失(其实token一旦丢失重新认证是好的,但是不要丢失太频繁,没事的时候也不要让用户认证)。

    为了避免过长的查询时间,可以将令牌放在内存中。这样查询速度肯定不是问题,也不用太担心占用内存。即使令牌是32位字符串,应用的用户数在百万或千万,也不会占用太多内存。

    token的加密

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

  • 令牌存储时对称存储,使用时解密。

  • 文章开头提到的签名sign:将请求、时间戳、令牌组合起来,用算法加密。

    两种方法最好结合使用。

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

    总结

    以上是对用户认证过程中token的简单总结。希望没有技术背景的产品经理在和开发兄弟交流时,不要被这些技术术语缠住。

    欢迎分享,转载请注明来源:聚客百科

    原文地址: http://juke.outofmemory.cn/life/274083.html

    ()
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-06-04
    下一篇 2022-06-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存