小编Sof*_*ons的帖子

授权服务 - 返回授权资源列表

检索用户有权访问的所有资源的列表的推荐方法是什么?

在我看到的许多示例中,授权被放置在一个单独的服务中 - 通常是一个公开类似于isAuthorized()的方法,可以用于单个查询("用户是否有权使用资源ABC?")以及批量查询("用户是否有权使用以下任何资源列表?").

虽然授权服务中存在授权逻辑,但授权策略的实施保留在应用程序本身内(例如,用于实际实现对资源的访问的业务逻辑层,基于授权服务的结果;或者演示文稿图层,用于根据授权服务的结果显示/隐藏各个选项,等等.

例如,如果我的数据访问层有可能返回的数十亿"资源",那么首选的方法是什么?我的业务逻辑层是否查询所有数据(通过网络传递所有数据),然后将该巨型列表转发到授权服务(再次通过网络),只获得一个巨大的"允许/拒绝"列表发回业务逻辑?显然这听起来不太对劲.

这是否是我们无法对数据访问,授权逻辑和业务逻辑进行"干净"分离的情况?我是不是要求我的数据访问层只返回给我一个用户可以访问的所有资源的列表,这可能最终被实现为一个简单的数据库连接,但是然后需要一些逻辑来确定谁可以访问在什么条件下(即授权策略)嵌入数据访问代码中的哪些资源,因此这些策略将在我的代码库中传播(例如,某些授权逻辑将在我的数据访问中)层,有些会在我的授权层等等)?

也许性能胜过"干净"的架构,但是有更好的方法吗?

architecture service authorization

6
推荐指数
1
解决办法
472
查看次数

标签 统计

architecture ×1

authorization ×1

service ×1