OAuth2.0中的scope和RBAC中的role有什么关系
【摘要】
使用了OAuth2.0授权协议之后我们在API的访问控制时又多了一个scope的概念。它和角色访问控制的作用类似,有点让人有点模糊不清。今天我们来理清楚这两个概念。
scope
scope是 OAuth 2.0 中的一种机制,用于限制客户端应用程序对用户帐户的访问。客户端应用程序可以请求一个或多个scope, 资源拥有者(...
使用了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 Authorization Server的过滤器链

Spring新的授权服务器Spring Authorization Server入门

文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。
原文链接:felord.blog.csdn.net/article/details/121369027
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)