OAuth2中Scope与Role
摘要
OAuth 全称是 Open Authentication。大家都知道 OAuth 是一个开放标准,但是除此以外似乎找不到一个非常准确的而且容易理解的 OAuth 定义。在网络中能够搜索到的 OAuth 的定义,基本都是来源于网络各文章作者自己对 OAuth 的理解。
为此,特别选择了一个笔者本人认为相对来说更容易理解的一个定义,具体如下:
开放授权( OAuth )是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
OAuth 主要有 OAuth 1.0 和 OAuth 2.0 两个版本,并且二者完全不同,且不兼容。OAuth 2.0 是目前广泛使用的版本,我们多数谈论 OAuth 时,一般都是指的 OAuth 2.0 版本。随着Spring Authorization Server 逐步普及, OAuth 2.1 版本也逐步地进入了大众的视野。
这里为什么要提及 OAuth 的定义?请注意定义中的关键词“第三方应用”,这个词对于理解后续内容有着至关重要的作用。
笔者认为使用 OAuth 2 最大的难点,是对 OAuth 2 中各种术语以及概念的理解——这里所说的“理解”,指的不仅仅是对概念字面意思的理解,而是对其真正“含义”的理解。能否真正理解这些术语以及概念的“含义”,会直接影响使用 OAuth 2 的系统设计及实现,甚至影响整个系统的安全保障能力。
OAuth 2 中最为特殊的概念就是 Scope。单独来看 Scope其实并不难理解,但因为 Spring Security生态组件中不仅有 Scope 概念还提供了Role概念。在此基础之上,如果再加上 RBAC 权限模型,那么就会让 OAuth 2 的相关概念变得难以理解。
OAuth 2 中 Scope 和 Role 关系和区别到底是什么?在实际设计过程中,如何应用和处理 Scope 与 Role关系?就成为使用 OAuth2 的关键技术难点之一。
提示
本文全网独家,深度解析 OAuth2 协议中和 Spring Security 生态各组件中 Scope 和 Role 概念与原理,以及在实战中的应用
阅读
注意
本篇文章为OAuth 2 中的 Scope 与 Role 深度解析
,是付费阅读
文章,购买方式详见:【高阶文档】