说明
将用户分配给资源实体的部分列表以限制访问(或可见性)是非常常见的(例如,将设备分配给用户) .
目前,我们已在REST API级别基于资源( /devices
)以及http动词( GET
, POST
等)实施授权,以控制读取,写入访问 . 但是,这只允许用户管理所有设备或什么也不管理 .
解决方案#1
device-service
本身维护用户设备关联,并根据动态令牌中提取的 userId
进行过滤 .
缺点:这将引入 device
和 account
服务之间的依赖关系 . 此外,我们将不得不在自己的服务中为其他类型的实体重复这种实现 .
解决方案#2
在API网关级别实现用户设备关联 . 这样,服务只需要通过 userId
提供过滤,这对它们来说是可选的 . 也无需从身份验证令牌中提取userId .
缺点:此解决方案通过关联检查为API网关负担 .
是否有更好或标准的方法来处理微服务中的这种资源实体级访问控制?