OAuth 2.0 access_token / refresh_token 详解-C/S开发框架
在 OAuth 2.0 授权协议中, 有两个令牌 token , 分别是 access_token 和 refresh_token, 为什么已经有了 access_token, 还需要 refresh_token 呢? 我们先看下面两者的介绍
下面是 OAuth 2.0 中的 token 工作流程图 回归主题, 这两个令牌的主要区别如下:
接下来, 我们继续看两个令牌在下面场景的应用, 假设有一个用户需要在后台管理界面上操作6个小时。 1 颁发一个有效性很长的 access_token, 比如 6 个小时, 或者可以更长, 这样用户只需要刚开始登录一次, access_token 可以一直使用, 直到 access_token 过期, 然后重复, 这种是不安全的, access_token 的时效太长, 也就失去了本身的意义。 2 颁发一个1小时有效期的 access_token, 过期后重新登录授权, 这样用户需要登录 6 次, 安全倒是有了, 但是用户体验极差 3 颁发1小时有效期的 access_token 和6小时有效期的 refresh_token, 当 access_token 过期后(或者快要过期的时候), 使用 refresh_token 获取一个新的 access_token, 直到 refresh_token 过期, 用户重新登录, 这样整个过程中,用户只需要登录一次, 用户体验好。 access_token 泄露了怎么办? 没关系, 它很快就会过期。 4 用户登录后, 在后台管理页面上操作1个小时后, 离开了一段时间, 然后 5个小时后, 回到管理页面继续操作, 此时 refresh_token 有效期6个小时, 一直没有过期, 也就可以换取新的 access_token, 用户在这个过程中, 可以不用重复登录。但是在一些安全要求较高的系统中, 第二次操作是需要重新登录的, 即使 refresh_token 没有过期, 因为中间有几个小时, 用户是没有操作的, 系统猜测用户已离开, 并关闭会话。 所以, 得出的结论是, refresh_token 是一个很巧妙地设计, 提升了用户体验的同时, 又保证了安全性。 另外, 在 OAuth 2.0 安全最佳实践中, 推荐 refresh_token 是一次性的, 什么意思呢? 使用 refresh_token 获取 access_token 时, 同时会返回一个 新的 refresh_token, 之前的 refresh_token 就会失效, 但是两个 refresh_token 的绝对过期时间是一样的, 所以不会存在 refresh_token 快过期就获取一个新的, 然后重复,永不过期的情况。 CSCODE.NETC/S开发框架-C/S框架网专注.NET技术、C/S架构快速开发框架软件
参考文档:
网站上这三套C/S开发框架不知道对高校有没有优惠政策? C/S开发框架权限分层级管理吗? C/S开发框架权限按层级管理建议 百度地图API调用实例之地址标注与位置显示-C/S开发框架 C# FastReport.NET批量打印条形码报表详解教程-C/S开发框架 tb_DataSet表(账套数据库配置表)详解-C/S开发框架 FileSystemWatcher类监控文件的更改状态并且实时备份文件-C/S开发框架 了解栈溢出StackOverFloweExeption的原理吗?-C/S开发框架 C#.NET RESTFul API详解-C/S开发框架 C#关键字之overload、override、new(重载、重写、覆写)-C/S开发框架 GoF设计模式:组合模式(Composite Pattern)—树形结构的处理-C/S开发框架 C#的Expression表达式使用方法-C/S开发框架 GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架 C#中Math函数简介,c# math-C/S开发框架 .NET 6 优先队列 PriorityQueue 详解-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |