使用了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有什么关系相关推荐

  1. OAuth 2.0 教程

    OAuth 2.0 (原文:http://tutorials.jenkov.com/oauth2/index.html) demo: https://github.com/qihaiyan/ng-bo ...

  2. 使用OAuth 2.0访问谷歌的API

    使用OAuth 2.0访问谷歌的API 谷歌的API使用的OAuth 2.0协议进行身份验证和授权.谷歌支持常见的OAuth 2.0场景,如那些Web服务器,安装,和客户端应用程序. 首先,获得来自O ...

  3. 详解OAuth 2.0授权协议(Bearer token)

    OAuth 2.0授权协议 1 认证(Authentication) 2 授权(Authorization) 3 OAuth 2.0与认证机制的联系 4 详解OAuth 2.0授权协议 4.1 授权码 ...

  4. 具有Stormpath和Spring Boot的OAuth 2.0令牌管理

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! OA ...

  5. OAuth 2.0 学习

    写在前面: 在此感谢 阮一峰 老师,以下内容是看了阮一峰老师 OAuth 2.0 的笔记.自己理解记录下来,以便自己后续学习或帮助到一些人. OAuth 2.0 是目前最流行的授权机制,用来授权第三方 ...

  6. 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证

    什么是用户认证? (What is User Authentication?) There is a user base associated with every app that is avail ...

  7. OAuth 2.0攻击面与案例总结

    本文整理了OAuth 2.0的攻击面+实际案例+辅助测试代码. OAuth流程 本文以两种广泛使用的方案为标准展开..如对流程不了解,请先移步学习: 理解OAuth 2.0 Authorization ...

  8. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  9. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

最新文章

  1. Docker虚拟化解析
  2. 理解同步异步、阻塞与非阻塞
  3. Matplotlib: “Unknown projection '3d'” error
  4. less14 颜色函数2
  5. 10、mybatis参数处理
  6. 95-150-020-源码-Sink-PrintSinkFunction
  7. 040_Auto.js
  8. 天梯—计算阶乘和(C语言)
  9. 广数系统980tdb系统说明书_不同数控系统中各个倒角指令的用法
  10. 【hiho一下 第147周】小Hi的烦恼
  11. 阴阳师bug以及服务器维护问题,阴阳师业原火bug处理公告汇总
  12. C调用Python的示例代码
  13. c语言中宏名的作用时段,C语言中的宏定义!
  14. 西门子滚筒洗衣机教程_西门子洗衣机优缺点
  15. c++类名加取地址符怎么理解
  16. 简单三个步骤网站建设
  17. WorldFirst如何注册?WorldFirst收款账号注册流程!
  18. php注册登录详解_实例讲解php用户注册与登录页面
  19. 用于机器学习的 NumPy(ML)
  20. 一文带你快速了解常用的CSS选择器场景

热门文章

  1. Shell分析HardSoft-Viewer结果文件并插入数据库
  2. JQuery执行DOM批量克隆并插入的提效方法
  3. windows time 服务无法启动 错误1058 解决方法
  4. 获得客户端的时区(get client-side time zone by JS)
  5. golang goroutine 得到返回值
  6. linux ssh 远程登陆 报错 software caused connection abort 解决方法
  7. 系统指纹 中间指纹 web指纹 识别简介
  8. python3 乱序函数 shuffle 简介
  9. IRP和IO_STACK_LOCATION结构
  10. c++ socket 连接超时_Web性能优化之-HTTP长连接