详解微服务中的三种授权模式( 三 )


如果授权数据由少量角色组成(例如 , 每个用户在一个组织中只能有一个角色) , 网关模式的效果最好 。 当权限开始不仅仅依赖于用户在组织中的角色时 , 请求的规模就会激增 。 也许用户可以有不同的角色 , 这取决于他们试图访问的资源类型(特定事件的组织者 , 或特定文件夹的编辑器) 。 有时 , 这些数据太大以至于无法放入请求头中 , 而其他时候 , 一次获取所有数据效率很低 。 如果是这种情况 , 将所有相关的授权数据塞到令牌或请求头中并不能完全解决问题 。
模式3:集中存放所有授权数据
另一种解决方案是将所有授权数据和逻辑放在一个地方 , 与需要实施授权的所有服务分开 。 实现此模式的最常见方法是构建专用的“授权服务” 。 然后 , 当其他服务需要执行权限检查时 , 它们会转向询问授权服务:
详解微服务中的三种授权模式
文章图片
在这个模型中 , 文档服务根本不关心用户的角色:它只需要询问授权服务 , 用户是否可以编辑文档 , 或者用户是否可以查看文档 。 授权服务本身包含做出该决策所需的所有内容(包括角色数据) 。