首页 > 其他分享 >OAuth2.0中刷新令牌(Refresh Token)的作用

OAuth2.0中刷新令牌(Refresh Token)的作用

时间:2024-12-21 14:10:06浏览次数:3  
标签:令牌 用户 Refresh 访问 Token 刷新 服务器 OAuth2.0 客户端

来着ChatGPT:

1. 为什么需要刷新令牌?

  • 访问令牌的短有效期:
    • 访问令牌(Access Token)通常设置短有效期(例如几分钟到几小时),以减少令牌被盗用后产生的安全风险。
    • 令牌过期后,客户端需要一种方式重新获取新的访问令牌,以继续访问受保护资源。
  • 避免频繁授权:
    • 如果每次访问令牌过期后都需要用户重新授权,会极大影响用户体验。
    • 刷新令牌可以在不打扰用户的情况下,让客户端安全地获取新的访问令牌。

2. 刷新令牌的特性

  • 长有效期:

    • 刷新令牌通常比访问令牌的有效期更长(可能是几天、几周,甚至永久有效,具体取决于应用设置)。
    • 它的主要作用是提供一个长期授权的机制。
  • 安全使用环境:

    • 刷新令牌设计为仅在安全的后端环境中使用,不会暴露给用户的浏览器或前端设备。
    • 因为如果刷新令牌被泄露,攻击者可能用它不断获取新的访问令牌,造成严重的安全问题。

3. 刷新令牌的工作流程

  1. 用户授权后,认证服务器返回:

    • 访问令牌(短期有效)。
    • 刷新令牌(长期有效)。
  2. 访问令牌过期:

    • 客户端使用刷新令牌向认证服务器请求新的访问令牌。
    • 请求过程通常需要验证客户端凭据(例如 Client ID 和 Client Secret)。
  3. 认证服务器验证刷新令牌:

    • 如果刷新令牌有效且合法,服务器会返回新的访问令牌(以及可能的新刷新令牌)。
    • 如果刷新令牌已失效或被撤销,服务器拒绝请求,客户端需要重新请求用户授权。

4. 为什么刷新令牌只在后端使用?

  • 减少暴露风险:

    • 如果刷新令牌暴露给用户设备(如浏览器、移动端应用),它可能被拦截或盗用。
    • 攻击者可以利用刷新令牌不断生成新的访问令牌,绕过访问令牌的有效期限制。
  • 后端环境更安全:

    • 刷新令牌通常存储在后端服务器中,该环境受到严格保护。
    • 客户端的后端与认证服务器之间的通信可以加密(通过 HTTPS)并验证身份,确保刷新令牌的安全使用。

5. 示例场景

假设你在使用一个第三方应用访问某个受保护的 API:

  1. 第一次授权后,第三方应用从认证服务器获得了访问令牌和刷新令牌。
  2. 访问令牌在 1 小时后过期。
  3. 第三方应用的后端服务器检测到访问令牌失效,它使用刷新令牌向认证服务器请求新的访问令牌。
  4. 认证服务器返回新的访问令牌,第三方应用继续调用 API,无需用户再次授权。

6. 总结

刷新令牌的设计使得:

  • 用户体验更好:避免频繁授权。
  • 安全性更高:令牌暴露风险降低,敏感令牌(刷新令牌)仅在后端使用。
  • 系统灵活性增强:通过刷新令牌的机制,访问令牌可以设置短有效期而不影响长期授权。

这种机制在安全性和用户体验之间找到了很好的平衡。

标签:令牌,用户,Refresh,访问,Token,刷新,服务器,OAuth2.0,客户端
From: https://www.cnblogs.com/xhg2992/p/18620702

相关文章

  • C#中 CancellationTokenSource的妙用
    在.NET中,CancellationTokenSource、CancellationToken和Task是处理异步操作和取消任务的重要工具。本文将通过一些简单的例子,帮助你理解它们的用法和协作方式。CancellationTokenSourceCancellationTokenSource是一个取消操作的触发器。它用于生成和管理CancellationToken,并控......
  • 了解OpenAi API key 和 Token
    了解OpenAIAPlkey和Token访问OpenAl的服务的方式有两种,第一种是通过ChatGPT页面访问,第二种是通过API访问。通过API访问时,我们就要关注如何获取使用APIkey,以及了解大模型的计费单元Token。OpenAIAPIkeyOpenALAPIkev是一个唯一标识符,允许开发人员通过API访问OpenA!的模型。A......
  • Js 获取token 过期时间
    functiongetJwtExpiration(token){try{constbase64Url=token.split('.')[1];//提取payload部分constbase64=base64Url.replace(/-/g,'+').replace(/_/g,'/');//Base64Url转换为Base64constjsonPa......
  • VOLTE网络中SIP消息的registration-token参数
    在VOLTE网络中,通信业务标识(Feature-CapabilityIndicator,或者字面翻译成“特性能力指示符”)是经常出现在SIPHeader中的一个参数,其取值和说明可参见3GPPTS24.237。这里简要介绍其中之一的g.3gpp.registration-token(在SIPHeader的Contact域出现时也被称作mediafeaturetag[媒......
  • 最大的顶级数据集开源,HuggingFace排名第一,可创建15万亿Token_全球最大 ai开源 训练数
    去年12月,生成式AI公司Petuum以及穆罕默德·本·扎耶德人工智能大学(MBZUAI)共同推出了一个用于创建开源大型语言模型的项目LLM360,旨在提高开源代码的透明度,公开整个LLM训练过程、代码、数据和最佳实践,以帮助开发人员更轻松、更快捷、更经济地创建开源大型语言模型,实......
  • Caused by_ net.sf.jsqlparser.parser.ParseException_ Encountered unexpected token
    问题:在xml里写完sql语句进行测试时抛出ParseException异常,如下:selectbasic.idas'id',frombasic_infobasic<iftest="request.behaveType!=null">innerjoinapply_infoapplyonapply.basic_info_id=basic.id&......
  • Swagger 调试,我不想再复制粘贴token啦~
    作为后端开发,进行WebApi调试,除了使用Postman,Apifox等WebApi调试工具之外,我想使用Swagger进行调试应该是更方便,更常用的方式了吧。那么在需要token授权的情况下,每次调试都需要调用一下登录API,然后复制返回的token,再粘贴到上图的文本框里,点一下Authorize按钮,是不......
  • Transformers 框架 Pipeline 任务详解(三):词元分类(token-classification)和命名实体识别
    微信公众号:老牛同学公众号标题:Transformers框架Pipeline任务详解(三):词元分类(token-classification)和命名实体识别公众号链接:https://mp.weixin.qq.com/s/r2uFCwPZaMeDL_eiQsEmIQ在自然语言处理(NLP)领域,Token-Classification(词元分类)任务是一项关键的技术,这项技术广泛应用于......
  • ApiPost如何使用另一个接口的返回参数作为当前接口的Token发送Post请求
    1.全局参数-》全局header里面:Token:{{token_var}}2.登录接口预执行脚本:apt.sendRequest({"method":"post","url":"http://127.0.0.1:15555/user/login","content-type":"application/json","dat......
  • 分布式锁有哪些实现方式?它们各自的优缺点是什么? JVM调优的基本步骤有哪些如何实现OAut
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)分布式锁有哪......