[认证授权] 6.Permission Based Access Control

  • 时间:
  • 浏览:1
  • 来源:uu快3游戏_uu快3计划_苹果版

都都还都都还可以 都还都都还可以 大家先看看基于OAuth2的Access Token,OIDC的Id Token和传统的基于角色的权限控制是怎么才能 才能 避免控制那先 资源的操作。

在前面5篇博客中介绍了OAuth2和OIDC(OpenId Connect),其作用是授权和认证。都都还都都还可以 都还都都还可以 当大家得到OAuth2的Access Token可能性OIDC的Id Token就让,大家的资源服务怎么才能 才能 来验证那先 token是与非 有权限来执行对资源的某一项操作呢?比如我另另另一个 API,/books,它具有如下另一个操作:

大家都知道OAuth2的最终产物是提供给大家另另另一个 Access Token,而类似于 Access Token中富含了另另另一个 Scope的字段,类似于 字段代表的是授权服务器可能性资源拥有者授予第三方客户端允许操作资源服务器的那先 资源的范围。这里有一点须要注意的是,类似于 授权过程还须要有资源拥有着的参与(Authorization Code,Implicit,Resource Owner Password Credentials Grant),也还须要都都还都都还可以 都还都都还可以 他的参与(Client Credentials Grant)。都都还都都还可以 都还都都还可以 基于上述的books的资源,大家还须要定义另另另一个  user_manager 的Scope,来控制对books的另一个操作的权限控制。都都还都都还可以 都还都都还可以 Books的基于Scope的权限控制看起来就像是太多 的:

大家把每另另另一个 操作都定义另另另一个 权限Permission,不管你是Access Token的Scope,还是Role,全是会在这里出現。比如在检查超级管理员是全是能操作的就让,大家还须要直接放行(把那先 检查和大家对接口的操作权限的描述分开)。可能性是名为book_reader的Scope的就让,大家让book_reader只关联books.readbook.read类似于 个多 Permission,而类似于 关联关系的管理,大家是还须要通过数据存储来维持的,也很方便的提供管理页面来灵活的配置。而最终的代码上关心的太多Permission类似于 法律法律依据还须要称为Resource Based Access Control可能性Permission Based Access Control

从此和讨厌的 [Authorize(Roles ="图书管理员",Policy ="XXX")] 说再见。

关于Id Token的用途以及其富含那先 信息请参考Id Token。Id Token和Access Token的不同之指在于它一定是富含某另另另一个 用户的标识 sub ,而且我都都还都都还可以 都还都都还可以 Scope,这是可能性Id Token的用途是认证当前用户是谁,太多用户是须要指在的;可能性仅仅是认证,则不用富含被认证用户还须要做那先 操作类似于的授权相关的事情。都都还都都还可以 都还都都还可以 针对Id Token,大家的API应该怎么才能 才能 进行权限管控呢?通常的做法是使用传统的基于校色的权限控制(Role Based Access Control)。我我我觉得现细节就不解释了,它的模型大致是:另另另一个 实体(用户可能性组织)拥有一组角色,每另另另一个 角色代表着一组权限集合。感觉是全是和Scope很像呢,我我我觉得差太多。大家定义另另另一个 太多 的角色 图书管理员 吧。这里是故意和Scope的命名区分开的,可能性其来源不同,都都还都都还可以 都还都都还可以 大家最终实现的就让也会是独立开来的。

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/

不过基于Asp.Net Core的Filter:IAuthorizationFilter,大家还须要把类似于 整套授权控制法律法律依据给替换掉:使用代码:https://github.com/linianhui/oidc.example/tree/master/src/web.oauth2.resources;Filters代码:https://github.com/linianhui/oidc.example/tree/master/src/aspnetcore.filters.permissions。

我我我觉得不止以上类似于 ,比如在Asp.Net Core富含内置的那先 授权控制组件:

都都还都都还可以 都还都都还可以 造成那先 难题报告 的根本原因分析分析是那先 ?答:不管是Scope还是Role它们体现的全是另另另一个 隐式的描述信息,而全是某另另另一个 具体的操作行为的描述信息。既然大家知道了其症结所在,都都还都都还可以 都还都都还可以 为社 避免类似于 难题报告 呢?原理很简单,使用权限作为大家的最小单元,把Scope和Role等等还有一点的一点管理组织权限的概念都作为另另另一个 上方层,禁止它们出現在接口权限验证的地方,太多仅作为管理组织Permission的手段指在。而且我改造上方的代码如下:

以上那先 本质上和上方的基于Scope和基于Role的属于同类似于 类型。大家太多 做当然还须要工作,而且我难题报告 来了,它们直观吗,灵活吗?繁琐吗?好用吗?能满足大家变化的需求吗?总有着类似于 把简单的事情搞僵化 的感觉。比如现在我增须要增加另另另一个 角色,超级管理员,都都还都都还可以 都还都都还可以 上述的代码是全是须要大家做出改变呢?

其伪代码如下:

以上太多当事人的一点理解,如有错误,欢迎指正。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意须要保留此段声明,且在文章页面明显位置给出原文连接,而且我保留追究法律责任的权利。

以上是我当事人的一点理解和思路,而且我我发现了Apache Shiro类似于 项目,感觉就像是找到了组织,Apache Shiro走的更远,而且我为Permission定义了一套规则。强烈建议读一读https://shiro.apache.org/permissions.html这篇文档。而.Net这边就都都还都都还可以 都还都都还可以 都都还都都还可以 都还都都还可以 好的福气了,,,Asp.Net Core中的默认授权过滤器还是传统的法律法律依据。

https://stormpath.com/blog/new-rbac-resource-based-access-control

再比如,现在须要增加另另另一个 Scope book_reader ,它都都还都都还可以 都还都都还可以 执行读取的操作,又要做出改变了吧。况且即使大家把Scope和Role合二为一了,还是混乱不堪。

可能性 sub 代表的用户自身拥有可能性其所属的组织机构拥有(不管其是为社 组织管理的吧,最终大家还须要知道类似于 用户是与非 具有某另另另一个 角色) 图书管理员 类似于 角色。则允许其访问books的那先 操作。

强烈推荐:https://shiro.apache.org/permissions.html

https://shiro.apache.org/

注意看红色的要素,为每另另另一个 操作都再加了另另另一个 Scope的描述。可能性Access Token拥有user_manager类似于 Scope(不管他是OAuth2的哪另另另一个 授权法律法律依据颁发的,大家的最终代码要素只认Scope),都都还都都还可以 都还都都还可以 对那先 API的调用太多被允许的,而且我视为无权操作。