OAuth 2.0中的scope和RBAC中的role有什么关系
使用了OAuth2.0授权协议之后我们在API的访问控制时又多了一个scope
的概念。它和角色访问控制的作用类似,有点让人有点模糊不清。今天我们来理清楚这两个概念。
scope
scope
是 OAuth 2.0 中的一种机制,用于限制客户端应用程序对用户帐户的访问。客户端应用程序可以请求一个或多个scope
, 资源拥有者(终端用户)可以对客户端应用程序请求的scope
进行拒绝、部分接受,通常是全部接受。客户端获得的访问令牌access_token
将包含用户最终指示的scope
。该access_token
将只能访问其包含的scope
限定的的资源。
httpSecurity.mvcMatcher("/message/**").authorizeRequests(requests ->requests.mvcMatchers(HttpMethod.GET,"/message/read").access("hasAuthority('SCOPE_openid')"))
❝
简而言之,
scope
是用来定义客户端访问资源的范围的。
role
role
是RBAC权限控制的重要概念之一。一方面它限制了资源的访问,资源该由那些角色访问;另一方面它确定了用户在应用程序中承担何种角色。它让资源和用户之间不再耦合,简化了权限的管理。role
是从用户角度来进行访问控制的一种方式。
httpSecurity.mvcMatcher("/message/**").authorizeRequests(requests ->requests.mvcMatchers(HttpMethod.GET,"/message/read").access("hasAuthority('ROLE_USER')"))
两者的关系
从逻辑上讲,用户只是将自身有权限访问的API授权给了某个客户端应用。
httpSecurity.mvcMatcher("/message/**").authorizeRequests(requests ->requests.mvcMatchers(HttpMethod.GET,"/message/read").access("hasAnyAuthority('SCOPE_openid','ROLE_USER')"))
其实我们记住这一条就可以了:scope基于客户端应用,role基于用户,它们的作用都是访问控制。被授权给第三方访问的API一定可以被该用户访问;能被该用户访问的API则不一定可以被授权给第三方访问。
推荐阅读
Spring OAuth2 授权服务器配置详解
2021-11-15
授权服务器框架Spring Authorization Server的过滤器链
2021-11-11
Spring新的授权服务器Spring Authorization Server入门
2021-11-09
推荐关注本文作者:码农小胖哥
分享高质量编程知识,探讨IT人生
技术干货,实战技巧,面试技巧,前沿资讯一个都不能少
OAuth 2.0中的scope和RBAC中的role有什么关系相关推荐
- OAuth 2.0 教程
OAuth 2.0 (原文:http://tutorials.jenkov.com/oauth2/index.html) demo: https://github.com/qihaiyan/ng-bo ...
- 使用OAuth 2.0访问谷歌的API
使用OAuth 2.0访问谷歌的API 谷歌的API使用的OAuth 2.0协议进行身份验证和授权.谷歌支持常见的OAuth 2.0场景,如那些Web服务器,安装,和客户端应用程序. 首先,获得来自O ...
- 详解OAuth 2.0授权协议(Bearer token)
OAuth 2.0授权协议 1 认证(Authentication) 2 授权(Authorization) 3 OAuth 2.0与认证机制的联系 4 详解OAuth 2.0授权协议 4.1 授权码 ...
- 具有Stormpath和Spring Boot的OAuth 2.0令牌管理
建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! OA ...
- OAuth 2.0 学习
写在前面: 在此感谢 阮一峰 老师,以下内容是看了阮一峰老师 OAuth 2.0 的笔记.自己理解记录下来,以便自己后续学习或帮助到一些人. OAuth 2.0 是目前最流行的授权机制,用来授权第三方 ...
- 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证
什么是用户认证? (What is User Authentication?) There is a user base associated with every app that is avail ...
- OAuth 2.0攻击面与案例总结
本文整理了OAuth 2.0的攻击面+实际案例+辅助测试代码. OAuth流程 本文以两种广泛使用的方案为标准展开..如对流程不了解,请先移步学习: 理解OAuth 2.0 Authorization ...
- 简述 OAuth 2.0 的运作流程
本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
最新文章
- Docker虚拟化解析
- 理解同步异步、阻塞与非阻塞
- Matplotlib: “Unknown projection '3d'” error
- less14 颜色函数2
- 10、mybatis参数处理
- 95-150-020-源码-Sink-PrintSinkFunction
- 040_Auto.js
- 天梯—计算阶乘和(C语言)
- 广数系统980tdb系统说明书_不同数控系统中各个倒角指令的用法
- 【hiho一下 第147周】小Hi的烦恼
- 阴阳师bug以及服务器维护问题,阴阳师业原火bug处理公告汇总
- C调用Python的示例代码
- c语言中宏名的作用时段,C语言中的宏定义!
- 西门子滚筒洗衣机教程_西门子洗衣机优缺点
- c++类名加取地址符怎么理解
- 简单三个步骤网站建设
- WorldFirst如何注册?WorldFirst收款账号注册流程!
- php注册登录详解_实例讲解php用户注册与登录页面
- 用于机器学习的 NumPy(ML)
- 一文带你快速了解常用的CSS选择器场景
热门文章
- Shell分析HardSoft-Viewer结果文件并插入数据库
- JQuery执行DOM批量克隆并插入的提效方法
- windows time 服务无法启动 错误1058 解决方法
- 获得客户端的时区(get client-side time zone by JS)
- golang goroutine 得到返回值
- linux ssh 远程登陆 报错 software caused connection abort 解决方法
- 系统指纹 中间指纹 web指纹 识别简介
- python3 乱序函数 shuffle 简介
- IRP和IO_STACK_LOCATION结构
- c++ socket 连接超时_Web性能优化之-HTTP长连接