首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在每次请求时只刷新令牌是个坏主意?

在每次请求时只刷新令牌是个坏主意,原因如下:

  1. 安全性问题:令牌是用于验证用户身份和授权访问的凭证。如果每次请求都只刷新令牌,那么在刷新期间,令牌可能会被截获或篡改,从而导致安全漏洞。相反,使用定期刷新令牌的方式可以减少令牌被攻击者利用的风险。
  2. 用户体验问题:每次请求都刷新令牌会增加请求的延迟,因为刷新令牌需要与认证服务器进行通信。如果用户的请求频率很高,这种延迟可能会对用户体验产生负面影响。相反,使用定期刷新令牌可以在一定程度上平衡安全性和用户体验。
  3. 认证服务器压力问题:如果每次请求都刷新令牌,认证服务器将面临更大的负载压力。认证服务器需要处理大量的令牌刷新请求,可能导致性能下降或服务不可用。相反,使用定期刷新令牌可以减轻认证服务器的压力,提高系统的可伸缩性。

综上所述,每次请求时只刷新令牌是一个坏主意,因为它存在安全性问题、用户体验问题和认证服务器压力问题。相反,使用定期刷新令牌的方式可以更好地平衡安全性和用户体验,并减轻认证服务器的负载压力。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决Django提交表单报错:CSRF token missing or incorrect的问题

视图函数将一请求传递给模板的呈现方法。 模板中,每个POST表单中都有一{% csrf_token %}模板标记,目标内部URL。...该表单有一有效的CSRF令牌登录另一浏览器选项卡或登录后单击back按钮之后,您可能需要使用表单重新加载页面,因为登录后令牌会旋转。...每次刷新页面的时候<input 中的csrf的value都会更新,每次重复登录的时候cookie的csrf令牌都会刷新,那么这两csrf-token有什么区别? ?...这样子看起来似乎没毛病,但是评论中的第三问题,每次刷新页面,form表单中的token都会刷新,而cookie中的token却只每次登录刷新。...同样也不难解释,为什么ajax请求,需要从cookie中拿取token添加到请求头中。

4.5K30

你确定懂OAuth 2.0的三方软件和受保护资源服务?

就需要刷新令牌刷新令牌需注意何时决定使用刷新令牌xx排版软件收到访问令牌同时,也会收到访问令牌的过期时间 expires_in。...即比如xx访问我的公众号文章,突然收到一访问令牌失效的响应,此时xx立即使用 refresh_token 请求访问令牌,以便继续代表我使用我的这些文章数据。...刷新令牌一次性的,使用后就失效,但它的有效期会比访问令牌长。 若刷新令牌也过期呢? 需将刷新令牌和访问令牌都放弃,几乎回到系统初始状态,只能让用户重授权。...互联网上的系统之间的通信,基本都是以 Web API 为载体的形式进行。授权服务最终保护的就是这些 API。构建受保护资源服务,除检查令牌的合法性,更关键权限范围。校验权限的占比大。...为解决这问题,应有统一网关层处理校验,所有请求都会经过 跳转到不同受保护资源服务。如此无需每个受保护资源服务上都做权限校验, API GATEWAY 做即可。

1.2K10

为什么 OAuth 里除了 Access Token 之外,还需要 Refresh Token?

我以每 50 分钟的时间间隔,使用刷新令牌(refresh token)获取一新的访问令牌(Access Token)。 我的问题为什么 OAuth 要设计双重 token?...当我通过 YouTube 进行身份验证,它给了我一刷新令牌。然后我使用这个刷新令牌大约每小时获取一新的访问令牌。 如果我有刷新令牌,我总是可以使用它来获取新的访问令牌,因为它永远不会过期。...为了清楚地区分这两令牌并避免混淆,以下 OAuth 2.0 授权框架中给出的功能: 访问令牌由授权服务器资源所有者的批准下颁发给第三方客户端。...首先,刷新令牌一种“证明”,表明 OAuth2 客户端已经从用户那里获得了访问其数据的许可,因此可以再次请求新的访问令牌,而无需用户通过整个 OAuth2 流程。...但是为什么刷新令牌呢?如果重点不让用户使用权限请求,那么为什么客户端不能简单地说“嘿,授权服务器,我想要另一访问令牌。而是,“嘿授权服务器,这是我过期的令牌,给我一新的!”。

1.8K30

从0开始构建一Oauth2Server服务 单页应用

弃用通知 单页应用程序的一常见历史模式使用隐式流程重定向中接收访问令牌,而无需中间授权代码交换步骤。这有许多安全问题,如隐式流程所述,不应再使用。...在这种情况下,应用程序的服务器永远不会向服务发出 API 请求,因为一切都直接在浏览器中处理。 授权 授权代码临时代码,客户端将用它来交换访问令牌。...您的应用应该将状态与其初始请求中创建的状态进行比较。这有助于确保您交换您请求的授权码,防止者使用任意或窃取的授权码重定向到您的回调 URL。...也几乎不需要刷新令牌,因为 JavaScript 应用程序只会在用户积极使用浏览器时运行,因此它们可以需要重定向到授权服务器以获取新的访问令牌。...具体来说,刷新令牌必须仅对一次使用有效,并且授权服务器必须在每次发布新的访问令牌以响应刷新令牌授予发布一新的刷新令牌

16930

从0开始构建一Oauth2Server服务 发起认证请求

如果你想知道你的访问令牌是否已经过期,你可以存储你第一次获得访问令牌返回的到期生命周期,或者只是尝试发出请求,如果当前一已经过期了。实际上,没有太大区别。...虽然这是一非常好的优化,但它不会阻止您仍然需要处理如果访问令牌预期时间之前过期 API 调用失败的情况。...,并且可以选择一新的刷新令牌,就像您在将授权代码交换为访问令牌收到的一样。...最安全的选择授权服务器每次使用刷新令牌发出一新的刷新令牌。这是最新的安全最佳当前实践中的建议,它使授权服务器能够检测刷新令牌是否被盗。...当刷新令牌每次使用后发生变化时,如果授权服务器检测到刷新令牌被使用了两次,则意味着它可能已被复制并被Attack者使用,授权服务器可以撤销所有访问令牌和相关的刷新令牌立即使用它。

12530

浅谈浏览器的缓存机制

浏览器有缓存的,做开发的同学都知道浏览器缓存是非常蛋疼的问题,特别是前端开发的同学,明明改了为什么还没有生效,经常要去清理浏览器的缓存,或者禁用浏览器的缓存功能。...我们知道浏览器中按F5刷新页面,CTRL+F5强制刷新页面,这两有什么区别呢? F5刷新会使用浏览器的缓存。...CTRL+F5刷新不会使用缓存的,每次请求都会请求服务器的最新资源,它的原理就是在请求头上加上一些参数告诉服务器要获取最新的资源。...当使用普通刷新,浏览器在请求之前会检查Expires这个值,如果Expires时间小于当前时间说明缓存已经失效,重新发起获取资源。...max-age 缓存的内容将在 xxx 秒后失效, 这个选项HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高 Cache-control这个参数在所有浏览器中兼容性很好

73080

小程序前后端交互使用JWT

为什么使用JWT?   首先,这不是一必选方案。有时候我们的API其它服务端和小程序公用的,那么就涉及到安全验证的问题了。   ...添加到请求头里 服务器解码JWT,并且如果令牌有效,则接受请求 一旦用户注销,令牌将在客户端被销毁,不需要与服务器进行交互一关键令牌无状态的。...例如你payload中存储了一些信息,当信息需要更新,则重新签发一JWT,但是由于旧的JWT还没过期,拿着这个旧的JWT依旧可以登录,那登录后服务端从JWT中拿到的信息就是过时的。...最简单的一种方式每次请求刷新JWT,即每个http请求都返回一新的JWT。这个方法不仅暴力不优雅,而且每次请求都要做JWT的加密解密,会带来性能问题。...另一种方法redis中单独为每个JWT设置过期时间,每次访问刷新JWT的过期时间。

1.6K41

OAuth 详解 什么 OAuth?

基本身份验证仍然用作服务器端应用程序 API 身份验证的原始形式:用户发送 API 密钥 ID 和密码,而不是每次请求向服务器发送用户名和密码。...它们客户端在请求令牌要求的权限包。这些由应用程序开发人员在编写应用程序时编码。 ? 范围将授权策略决策与执行分离。这是 OAuth 的第一关键方面。权限最重要的。...每次刷新访问令牌,您都会获得一新的加密签名令牌。密钥轮换内置于系统中。 OAuth 规范没有定义令牌是什么。它可以是您想要的任何格式。...因为 SAML 断言短暂的,所以此流程中没有刷新令牌,您必须在每次断言过期继续检索访问令牌。 不在 OAuth 规范中,Device Flow。没有网络浏览器,只有电视之类的控制器。...当人们问您是否支持 OAuth ,您必须澄清他们的要求。他们问您是否支持所有六流程,还是支持主要流程?所有不同的流程之间都有很多可用的粒度。 安全与企业 OAuth 的应用范围很广。

4.4K20

OAuth 2.0中,如何使用JWT结构化令牌

JWT 结构化令牌 JSON Web Token(JWT)开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象各方之间安全地传输信息。...第三,使用 JWT 格式的令牌,有助于增强系统的可用性和可伸缩性。这种 JWT 格式的令牌,通过“自编码”的方式包含了身份验证需要的信息,不再需要服务端进行额外的存储,所以每次请求都是无状态会话。...缺点: 没办法使用过程中修改令牌状态 (无法在有效期内停用令牌) 解决: 一,将每次生成 JWT 令牌的秘钥粒度缩小到用户级别,也就是一用户一秘钥。...一般情况下,这种方案需要配套一单独的密钥管理服务。 二不提供用户主动取消授权的环境里面,如果考虑到修改密码的情况,那么我们就可以把用户密码作为 JWT 的密钥。当然,这也是用户粒度级别的。...第二种情况, 访问令牌失效之后可以使用刷新令牌请求新的访问令牌来代替失效的访问令牌,以提升用户使用第三方软件的体验 第三种情况,就是让第三方软件比如小兔,主动发起令牌失效的请求,然后授权服务收到请求之后让令牌立即失效

2.1K20

浅谈电商网站开发中用户会话管理机制的设计和实现原理

Cookie 的 Expires 字段存放的过期时间,当 Expires 为 Session ,意为该 Cookie 在当前会话内有效,浏览器关闭则 Cookie 自动删除。...刷新令牌本身凭证,表明持有其的客户端,曾经通过 OAuth 认证,获得了访问受保护资源的许可,当通过刷新令牌再次请求新的访问令牌,客户端不用再从头开始走一遍 OAuth 认证的完整流程。...比如下图的例子,二者分别调整为30秒和60秒之后过期: 访问令牌获取之后,接下来 Commerce Cloud UI 消费后台 OCC API ,会将其附加在 HTTP 请求的头部字段里: 如果此时访问令牌已经过期...,幸运的我们还有刷新令牌。...此时,SAP Commerce Cloud UI 会将过期的访问令牌,连同刷新令牌一齐发送给 Commerce 后台,申请一新的访问令牌: SAP Commerce Cloud UI 初次登录申请令牌

2.5K20

Ajax技术全解(3)

如果在此案中应用Ajax后,结果就会有所改观: 初始化页面我们只读出它的第一级的所有数据并显示,在用户操作一级菜单其中一项,会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据,如 果再继续请求已经呈现的二级菜单中的一项...,再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据,以此类推……这样,用什么就取什么、用多少就取 多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面不用重载全部内容,更新需要更新的那部分即可...任何要求具备很高交互性数据操纵的场合都应该用JavaScript,而不是用一系列的服务器请求来完成。每次数据更新后,再对其进行查找和处理需要耗费较多的时间,而Ajax可以加速这个过程。...3.基本的导航 使用Ajax来做站点内的导航坏主意为什么不把时间放在让系统程序作的更好上呢?...4.替换大量的文本 使用Ajax可以实现页面的局部刷新,但是如果页面的每个部分都改变了,为什么不重新做一次服务器请求呢? 5.对呈现的操纵 Ajax看起来像是一纯粹的UI技术,但事实上它不是。

1.7K30

开发中需要知道的相关知识点:什么 OAuth?

基本身份验证仍然用作服务器端应用程序 API 身份验证的原始形式:用户发送 API 密钥 ID 和密码,而不是每次请求向服务器发送用户名和密码。...它们客户端在请求令牌要求的权限包。这些由应用程序开发人员在编写应用程序时编码。 范围将授权策略决策与执行分离。这是 OAuth 的第一关键方面。权限最重要的。...每次刷新访问令牌,您都会获得一新的加密签名令牌。密钥轮换内置于系统中。 OAuth 规范没有定义令牌是什么。它可以是您想要的任何格式。...因为 SAML 断言短暂的,所以此流程中没有刷新令牌,您必须在每次断言过期继续检索访问令牌。 不在 OAuth 规范中,Device Flow。没有网络浏览器,只有电视之类的控制器。...当人们问您是否支持 OAuth ,您必须澄清他们的要求。他们问您是否支持所有六流程,还是支持主要流程?所有不同的流程之间都有很多可用的粒度。 安全与企业 OAuth 的应用范围很广。

20740

Restful安全认证及权限的解决方案

JWT的优势:  无状态,可以无限水平扩展  可重用,可以多语言多平台多域中使用  安全性高,由于没有使用Cookie,因此可以防止跨站请求伪造(CSRF)攻击  性能好,验证令牌并解析其内容...7.用户注销,服务端需要把还在时效内的Token保存到Redis中,并设置正确的失效时长。  ? 四、实际环境中如何使用JWT  1.Web应用程序  令牌过期前刷新令牌。...如设置令牌的过期时间为一星期,每次用户打开Web应用程序,服务端每隔一小生成一令牌。如果用户一多星期没有打开应用,他们将不得不再次登录。 ...2.移动应用程序  大多数移动应用程序用户进行一次登录,定期刷新令牌可以使用户长期不用登录。  但如果用户的手机丢失,则可提供一种方式由用户决定撤销哪个设备的令牌。...缓存中不保存Token,而是保存一计数,每次更换Token,计数加1,这个计数的值会跟用户ID一起加密后保存在新生成的Token中,返回给用户,用户每次访问携带这个Token。

2.8K50

你真的深知JWT(JSON Web Token)了吗?

JWT令牌的缺陷 无法使用过程中修改令牌状态。 比如我使用xx,可能因为莫须有原因修改了公众号平台的密码或突然取消了给xx的授权。这时,令牌状态就该有变更,将原来对应令牌置无效。...但使用JWT每次颁发的令牌都不会存在服务端,无法改变令牌状态。这表示JWT令牌在有效期内畅通无阻。 那么可以把JWT令牌存储分布式内存数据库比如Redis中吗? NO!...这违背JWT意义 - 将信息结构化存入令牌本身。通常有两种方案: 将每次生成JWT令牌的秘钥粒度缩小到用户级别,即一用户一秘钥 如此,当用户取消授权或修改密码,可让该密钥一起修改。...该过程不排除主动销毁令牌的可能,比如令牌被泄露,授权服务可让令牌失效。 访问令牌失效后可使用刷新令牌请求令牌,提高用户使用三方软件的体验。...比如用户和三方软件间存在一种订购关系:我购买了xx软件,那么到期或退订且我授权的token还未到期情况下,就需这样一种令牌撤回协议,支持xx主动发起令牌失效请求

1K10

OAuth2.0实战(三)-使用JWT

6.3 增强系统可用性和可伸缩性 JWT令牌,通过“自编码”方式包含身份验证需信息,不再需要服务端额外存储,所以每次请求都是无状态会话。...比如我使用xx,可能因为莫须有原因修改了公众号平台的密码或突然取消了给xx的授权。这时,令牌状态就该有变更,将原来对应令牌置无效。...但使用JWT每次颁发的令牌都不会存在服务端,无法改变令牌状态。这表示JWT令牌在有效期内畅通无阻。 那么可以把JWT令牌存储分布式内存数据库比如Redis中吗? NO!...这违背JWT意义 - 将信息结构化存入令牌本身。通常有两种方案: 将每次生成JWT令牌的秘钥粒度缩小到用户级别,即一用户一秘钥 如此,当用户取消授权或修改密码,可让该密钥一起修改。...该过程不排除主动销毁令牌的可能,比如令牌被泄露,授权服务可让令牌失效。 访问令牌失效后可使用刷新令牌请求令牌,提高用户使用三方软件的体验。

1.1K20

8种至关重要OAuth API授权流与能力

微信公众平台的相关信息可以看作由腾讯创建但属于公众号运营者所有的资源,而在运营者获取相关信息或进行操作仍旧需要采用授权的方式来确认安全性。 ? 客户凭证流:客户端根据令牌端点进行身份验证。...它规范中指定以便处理遗留或迁移系统的案例。使用ROPC必须小心谨慎。一例子可以是企业级桌面应用程序,这类应用不经常更新,但仍需要访问API平台。...我们不建议使用它,但是如果您真的需要的话:这个流适用于私有客户端,并且客户端可以获得一刷新令牌。...由于移动应用程序通过应用程序商店分发的,因此很难给它们一唯一标识的证书,因此移动客户端通常被标记为公共的客户端。DCR尝试对此进行弥补的方式,客户端自我注册,以及安装请求唯一的凭据。...则对这一刷新令牌X的撤销操作不会有任何后续效果。 参见http://t.cn/Ewtcr8X 五、为什么区分OAuth流很重要 OAuth中似乎有很多类似的流,但是每个流都有其特定的用例。

1.6K10

授权服务如何颁发授权码和访问令牌的?

授权服务如何生成访问令牌? 访问令牌过期了而用户又不在场的情况下,又如何重新生成访问令牌? 授权服务的工作过程 xx让我去公众号开放平台给它授权数据,你是否好奇?开放平台怎么知道 xx 谁?...咱们上节课讲过,授权码许可类型中,授权服务的工作,可以划分为两大部分,一颁发授权码code,一颁发访问令牌access_token。 ?...第四步,验证权限范围(第二次) 步骤二生成授权页面前授权服务进行的第一次校验,对比xx请求的权限范围和注册的权限。 为什么又要校验一次 因为这相当于一次用户的输入权限。...刷新令牌初衷访问令牌失效,为了不让用户频繁手动授权,通过系统重新请求生成一新的访问令牌。...使用刷新令牌 OAuth 2.0规范中,刷新令牌一种特殊的授权许可类型,嵌入授权码许可类型下的一种特殊许可类型。

2.7K20

REST API 的安全认证,从 OAuth 2.0 到 JWT 令牌

现在假设每秒有 3k 请求 Facebook 的系统中每秒 300k 请求更现实。将这请求乘以四,结果每秒要向服务器发出 12k 次调用。 ?...,这是一访问权限令牌刷新令牌。...访问令牌用于访问系统中的所有服务。到期后,系统使用刷新令牌生成一对新的令牌。所以,如果用户每天都进入系统,令牌也会每天更新,不需要每次都用用户名和密码登录系统。...刷新令牌也有它的过期时间(虽然它比访问令牌长得多),如果一用户一年没有进入系统,那么很可能会被要求再次输入用户名和密码。...当你要从 Amazon 请求某些资源,你可以获取到所有相关的 http 头信息,使用这个私钥对其进行签名,然后将签名的字符串作为 header 发送。 服务器端,亚马逊也有你的访问密钥。

2.7K30

浏览器中存储访问令牌的最佳实践

问题,如何在JavaScript中获取这样的访问令牌?当您获取一令牌,应用程序应该在哪里存储令牌,以便在需要将其添加到请求中?...它是一用于浏览器中异步存储大量数据的API。但是,存储令牌,这个浏览器API提供的功能和容量通常不是必需的。由于应用程序每次API调用中都发送令牌,最好使令牌的大小最小化。...另一关键属性Secure标志,它确保cookie仅通过HTTPS发送,以减轻中间人攻击。 其次,颁发短暂的几分钟内有效的访问令牌。...第四,发送API凭据要限制性强。向需要API凭据的资源发送cookie。这意味着确保浏览器实际需要访问令牌的API调用中添加cookie。...最后,使用刷新令牌,请确保将它们存储自己的cookie中。没有必要在每个API请求中都发送它们,所以请确保不是这种情况。刷新令牌必须只刷新过期的访问令牌添加。

12210
领券