jun*_*gos 6 access-control claims-based-identity role-based role-base-authorization role-based-access-control
坦率地说,我对实体级授权有一个要求。我希望得到一些关于这个权限结构的指导,我如何在 .NET 4.5 中实现它,以及是否有办法改进它。
它是这样的:
我有一组结构如下的数据:
在哪里
Fleet是零个或多个的集合Cars。Fleet可以包含其他Fleets 舰队可以在以后重组和移动以用于组织目的。
我在系统中有多个具有与这些实体相关的权限的角色:
授权逻辑允许User系统中的 a 被授予对具有一个或多个角色的aFleet或 a 的访问权限Car。
以下是一些有助于解释的场景:
User Jim以角色访问Fleet #5 的权限Driver,他将被允许驾驶车队 #2 下的任何汽车。由此产生的权限允许他驾驶汽车 #4, 5, 6Car #1作为机械师的访问权限,则由此产生的权限允许她只修理汽车 #1。Owner和权限Mechanic,她可以添加和移除车队 #2, 4, 5并且她可以修理汽车 #1, 2, 3, 4, 5, 6 .Owner 和舰队#6为Driver,所得到的权限让他添加和删除汽车所有车队和驱动汽车#7,8,他不能开车超过#以外的任何其他汽车7 和 8。这种实体级授权的好方法是什么?
如果重要的话,我们使用 .NET 4.5.1 和 EF6 Code First,构建在ASP.net Boilerplate 之上。
小智 1
您想要实现的细粒度授权让我想起了CakePHP 的访问控制列表 (ACL) 描述中的访问控制对象(ACO - 想要的东西)和访问请求对象(ARO - 想要的东西) ,但有一些变化:
简而言之:
您拥有 ACO(车队和汽车),ARO(车主、经理、司机、机械师)将要求您提供 ACO(车队和汽车)。如果您想知道请求者是否有权访问某个对象,您可以找到该对象的路径(:Can John access "Car #3"?从根查找“Car #3”的路径:)Fleet #1 > Fleet #2 > Car #3,然后为每个节点分配默认权限“拒绝”,但切换如果该节点位于请求者的允许节点列表中,则将其设置为“允许”。如果最后一个节点以“允许”结尾,那么,好吧...允许,否则拒绝。
首先理解逻辑是关键。任何语言的实现都是其次的。
我希望它能为您指明正确的方向。
干杯,
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |