前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OAuth2.0中的scope和RBAC中的role有什么关系

OAuth2.0中的scope和RBAC中的role有什么关系

作者头像
码农小胖哥
修改2021-11-19 14:11:20
1.2K0
修改2021-11-19 14:11:20
举报

使用了OAuth2.0授权协议之后我们在API的访问控制时又多了一个scope的概念。它和角色访问控制的作用类似,有点让人有点模糊不清。今天我们来理清楚这两个概念。

scope

scopeOAuth 2.0 中的一种机制,用于限制客户端应用程序对用户帐户的访问。客户端应用程序可以请求一个或多个scope, 资源拥有者(终端用户)可以对客户端应用程序请求的scope进行拒绝、部分接受,通常是全部接受。客户端获得的访问令牌access_token将包含用户最终指示的scope。该access_token将只能访问其包含的scope限定的的资源。

代码语言:javascript
复制
httpSecurity.mvcMatcher("/message/**")
                .authorizeRequests(requests ->
                        requests.mvcMatchers(HttpMethod.GET,"/message/read")
                                .access("hasAuthority('SCOPE_openid')"))

❝简而言之,scope是用来定义客户端访问资源的范围的。

role

role是RBAC权限控制的重要概念之一。一方面它限制了资源的访问,资源该由那些角色访问;另一方面它确定了用户在应用程序中承担何种角色。它让资源和用户之间不再耦合,简化了权限的管理。role是从用户角度来进行访问控制的一种方式。

代码语言:javascript
复制
httpSecurity.mvcMatcher("/message/**")
                .authorizeRequests(requests ->
                        requests.mvcMatchers(HttpMethod.GET,"/message/read")
                                .access("hasAuthority('ROLE_USER')"))

两者的关系

从逻辑上讲,用户只是将自身有权限访问的API授权给了某个客户端应用。

代码语言:javascript
复制
httpSecurity.mvcMatcher("/message/**")
                .authorizeRequests(requests ->
                        requests.mvcMatchers(HttpMethod.GET,"/message/read")
                                .access("hasAnyAuthority('SCOPE_openid','ROLE_USER')"))

其实我们记住这一条就可以了:scope基于客户端应用,role基于用户,它们的作用都是访问控制被授权给第三方访问的API一定可以被该用户访问;能被该用户访问的API则不一定可以被授权给第三方访问。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农小胖哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • scope
  • role
  • 两者的关系
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档