什么是token?token是由服务器生成的字符串,用作客户端发出请求的token。当第一个会话启动时,服务器生成一个token并将其返回给客户机。将来,客户只需要使用这个token来请求数据,而不需要重新输入用户名和密码。
基于token的身份验证
基于token的身份验证方法不需要将用户的登录日志存储在服务器上。过程如下:
客户端将使用用户名和密码请求登录,并要求服务器确认用户名和密码。
如果检查成功,服务器将发出一个token并将其作为客户端token发送。在接收到token之后,客户机可以将token存储在cookie或本地存储中。每当客户端从服务器请求资源时,客户端必须向服务器发送token。
服务器接收请求,然后验证在客户端请求中找到的token。如果验证成功,请求的数据将返回给客户。当应用程序登录时,加密的用户名和密码将发送到服务器。检查用户名和密码。例如,如果以任何方式成功,将随机生成一个32位字符串作为token,存储在服务器上,然后返回到应用程序。请求后,在token中,服务器检查token,成功返回所需结果,返回错误消息失败,可以重新登录。服务器上的token设置为过期,并且在每次应用程序请求时都会进行验证。
象征性优势
1。无状态、可扩展
存储在客户端的token是无状态的和可扩展的。如果不存储这种无状态和会话信息,负载均衡器就可以将用户信息从一个服务传输到另一个服务。在会话中存储经过身份验证的用户信息时,用户必须为每个请求向经过身份验证的服务器发送身份验证信息(称为会话关联)。大量用户可能导致拥塞。但是,不要担心使用token来解决这些问题,因为token包含您的凭据。
2。安全
通过在请求中发送token而不是cookie,可以避免CSRF(跨站点请求伪造)。即使客户端使用cookie来存储token,cookie也只是一种存储机制,而不是用于身份验证。减少会话,而不在会话中存储信息。token是紧急的,因此用户需要在一段时间后再次进行身份验证。无需等待token自动过期。token具有恢复操作。token终止可以使具有相同身份验证的特定token或token集失效。
三。可扩展性
token可用于创建与其他程序共享权限的程序。例如,您可以将非官方社交账户链接到自己的大账户(Fackbook或Twitter)。
通过此服务登录Twitter(使用此进程缓冲区)时,可以附加此缓冲区并将其发布到Twitter流。此token允许您为第三方应用程序提供可选权限。
4。跨平台和跨域
在提前讨论CORS(域之间的资源交换)和扩展应用程序和服务时,涉及到多个设备和应用程序。
此标准基于这样一个事实,即您可以在创建token时配置一些选项。稍后我们将记录内容,但标准用法反映在JSONWebtoken中。您可以将最近使用的应用程序和文档用作JSONWebtokens。它是一种兼容的语言。这意味着您可以真正地转换它以供以后使用,并成为一种身份验证机制。
象征性原则
base64加密1。有效载荷和标题信息、加密文本和加密表单标题文本。
点形成的两个密文连接到加密密钥服务器,生成hs256的签名。
三。文本后面的前两个密码是常规签名。最后一个表单返回到服务器token,请注意:
(1)此用户token到服务器(分为三部分,第一部分是密文加密负载、签名)。服务器将解密解析为第一部分(第一个密文)和base64。你可以知道签名算法。这是hs256的解决方案。
(2)服务器hs256操作执行签名签名,签名签名是在使用原始密钥将签名返回到密文(加密的标题文本+'+付费密文)之后获得的。如果token合法,则差异意味着原始文本已被修改。
(3)第2部分(密码有效负载)由base64确定,以确定解密的到期日期以及客户端是否知道授权期间的有效负载。如果token过期,则将此值与当前时间进行比较。