前端怎么解决cors攻击 Token流程是什么?怎么解决超时问题?
Token流程是什么?怎么解决超时问题?
令牌验证流程:
1.背景介绍
传统身份验证方法
HTTP是一个无状态协议,也就是说,它不 我不知道谁在访问这个应用程序。这里我们把用户看成一个客户端,客户端使用用户名和密码认证通过了,但是下一次这个客户端发送请求的时候需要再次验证。
解决方案是,当用户请求登录时,如果没有问题,我们会在服务器上生成一条记录,可以说明登录的用户是谁,然后把这条记录的ID号发送给客户端。客户端收到后,将这个ID号存储在一个Cookie中,下次用户向服务器发送请求时,可以随身携带这个Cookie。这样,服务器将验证这个Cookie中的信息,看是否能在服务器上找到相应的记录。如果可以,说明用户通过了认证,然后将用户请求的数据返回给客户端。
以上是会话。我们需要在服务器上存储为登录用户生成的会话。这些会话可以存储在内存、磁盘或数据库中。我们可能需要定期清理服务器上的过期会话。
基于令牌的认证方法
使用基于令牌的认证方法,不需要存储用户 服务器上的登录记录。一般流程如下:
客户端请求使用用户名和密码登录。
服务器收到验证用户名和密码的请求。
验证成功后,服务器会颁发一个令牌并发送给客户端。
收到令牌后,客户端可以将其存储在Cookie或LocalStorage中。
每次客户端向服务器请求资源时,都需要携带服务器颁发的令牌。
服务器接收请求,然后验证客户端请求中携带的令牌,如果验证成功,则向客户端返回请求的数据。
传统身份验证方法
HTTP是一个无状态协议,也就是说,它不 我不知道谁在访问这个应用程序。这里我们把用户看成一个客户端,客户端使用用户名和密码认证通过了,但是下一次这个客户端发送请求的时候需要再次验证。
解决方案是,当用户请求登录时,如果没有问题,我们会在服务器上生成一条记录,可以说明登录的用户是谁,然后把这条记录的ID号发送给客户端。客户端收到后会将这个ID号存储在一个Cookie中,下次用户向服务器发送请求时可以带上这个Cookie,这样服务器就会验证这个Cookie中的信息,看看在服务器上是否能找到对应的记录。如果有,如果有,服务器可以。数据被返回给客户端。
以上是会话。我们需要在服务器上存储为登录用户生成的会话。这些会话可以存储在内存、磁盘或数据库中。我们可能需要定期清理服务器上的过期会话。
基于令牌的认证方法
使用基于令牌的认证方法,不需要存储用户 服务器上的登录记录。一般流程如下:
客户端请求使用用户名和密码登录。
服务器收到验证用户名和密码的请求。
验证成功后,服务器会颁发一个令牌,然后发送给客户端。
收到令牌后,客户端可以将其存储在Cookie或LocalStorage中。
每次客户端向服务器请求资源时,都需要携带服务器颁发的令牌。
服务器接收请求,然后验证客户端请求中的令牌,如果验证成功,则向客户端返回所请求数据切片的来源。
最早的Tiles是在Struts1.1中组装的,主要目的是使用多个jsp页面作为新页面功能的一部分,然后将它们组合成一个最终的呈现页面。通过这种,可以方便地更改和维护页面的功能。
现在Tiles已经作为Apache的一个独立开源项目维护。
如果你发现自己在每个页面上写了三行相同的JSP代码,或者如果你想轻松定义一个复杂的模板布局,那么我相信学习Tiles框架会对你有所帮助。
2.知识分析
传统身份验证方法
HTTP是一个无状态协议,也就是说,它不 我不知道谁在访问这个应用程序。这里我们把用户看成一个客户端,客户端使用用户名和密码认证通过了,但是下一次这个客户端发送请求的时候需要再次验证。
解决方案是,当用户请求登录时,如果没有问题,我们会在服务器上生成一条记录,可以说明登录的用户是谁,然后把这条记录的ID号发送给客户端。客户端收到后,将这个ID号存储在一个Cookie中,下次用户向服务器发送请求时,可以随身携带这个Cookie。这样,服务器将验证这个Cookie中的信息,看是否能在服务器上找到相应的记录。如果可以,说明用户通过了认证,然后将用户请求的数据返回给客户端。
以上是会话。我们需要在服务器上存储为登录用户生成的会话。这些会话可以存储在内存、磁盘或数据库中。我们可能需要定期清理服务器上的过期会话。
基于令牌的认证方法
使用基于t的Oken 的认证方法不需要存储用户 服务器上的登录记录。一般流程如下:
客户端请求使用用户名和密码登录。
服务器收到验证用户名和密码的请求。
验证成功后,服务器会颁发一个令牌,然后发送给客户端。
收到令牌后,客户端可以将其存储在Cookie或LocalStorage中。
每次客户端向服务器请求资源时,都需要携带服务器颁发的令牌。
服务器接收请求,然后验证客户端请求中携带的令牌,如果验证成功,则向客户端返回请求的数据。
传统身份验证方法
HTTP是一个无状态协议,也就是说,它不 我不知道谁在访问这个应用程序。这里我们把用户看成一个客户端,客户端使用用户名和密码认证通过了,但是下一次这个客户端发送请求的时候需要再次验证。
解决方案是,当用户请求登录时,如果没有问题,我们会在服务器上生成一条记录,可以说明登录的用户是谁,然后把这条记录的ID号发送给客户端。客户端收到后,将这个ID号存储在一个Cookie中,下次用户向服务器发送请求时,可以随身携带这个Cookie。这样,服务器将验证这个Cookie中的信息,看是否能在服务器上找到相应的记录。如果可以,说明用户通过了认证,然后将用户请求的数据返回给客户端。
以上是会话。我们需要在服务器上存储为登录用户生成的会话。这些会话可以存储在内存、磁盘或数据库中。我们可能需要定期清理服务器上的过期会话。
基于令牌的认证方法
使用基于令牌的认证方法,不需要存储用户 服务器上的登录记录。一般流程如下:
客户端请求使用用户名和密码登录。
服务器收到验证用户名和密码的请求。
验证成功后,服务器会颁发一个令牌,然后发送给客户端。
收到令牌后,客户端可以将其存储在Cookie或LocalStorage中。
每次客户端向服务器请求资源时,都需要携带服务器颁发的令牌。
服务器接收请求,然后验证客户端请求中携带的令牌,如果验证成功,则向客户端返回请求的数据。
3.常见问题
基于服务器的身份验证方法暴露的一些问题
每次经过身份验证的用户发出请求时,服务器都需要创建一个记录来存储信息。当越来越多的用户发送请求时,内存的开销也会增加。
2.可伸缩性:在服务器中使用Seesion在内存中存储登录信息,伴随而来的是可扩展性问题。
(跨域资源共享):当我们需要跨多个移动设备使用数据时,跨域资源共享会是一件很头疼的事情。当使用Ajax从另一个域获取资源时,可以禁止请求。
4.CSRF(跨站请求伪造):当用户访问银行网站时,很容易受到跨站请求伪造的攻击,并可用于访问其他网站。在这些问题中,可扩展行是最突出的。因此,我们有必要找到一种更有效的方法。
第四步:解决方案
基于令牌的认证过程如下,:。
1.用户通过用户名和密码发送请求。
2.程序验证。
3.程序向客户端返回一个签名的令牌。
4.客户端存储令牌,并在每次发送请求时使用它。
5.服务器验证令牌并返回数据。
令牌有一定的时间限制。到期后,您需要重新进行身份认证才能登录并获得新令牌。
移动客户端登录服务器时,需要提供包含令牌的认证,服务器需要向通道认证包含令牌的认证信息。如果通道返回有效,则移动客户端被认为是合法的。
在这个过程中,经常会断开连接,然后重新连接。每次重新连接过程相当于登录服务器一次,服务器会向通道服务器认证令牌。但由于令牌的时效性,一段时间后断开的重新连接会被拒绝。
一种解决方案是:每次断开连接重新连接时,登录服务器,申请新的令牌;;另一种是:当服务器反馈是令牌已经过期,那么通知客户端再次从通道服务器获取,然后断开连接,重新连接新的令牌。相对于可能的频繁获取令牌,更倾向于第二种方法。从体验来看,大部分代币的时效都是按照小时来计算的。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。