问题

我试图找到一种很好的方法来构建我的api网关的权限,以便从外部软件访问 .

上下文

在我目前的公司,我们有一个API网关 .

当用户登录时,我们将所有用户权限发送到前端服务,并为当前用户生成所有菜单和屏幕以及允许访问的内容 .

例:

{
 user: joe,
 permissions: [
  'fancyMenu',
  'anotherFancyMenu'
 ]
}

这种方法非常有效,但是现在我们需要将API暴露给其他客户端,他们将直接访问我们的 endpoints .

问题

因此,以前访问fancyStuff菜单的用户需要访问 endpoints x,y,z才能完成操作 . 每个 endpoints 都必须检查记录的用户是否具有fancyStuff权限 . 现在我们需要将API公开给其他软件 .

在此示例中,权限fancyMenu需要访问这3个不同的 endpoints 才能完成操作 . 获得一些东西和花哨的硬币来创造一个新的奇特的操作 .

fancyMenu -> POST /fancy
fancyMenu -> GET /coins/fancy
fancyMenu -> GET /stuff

解决方案

话虽这么说,我们在api网关上创建了一个新类,并将所有菜单权限映射到所需的 endpoints .

一个例子是我们的菜单fancyMenu现在有一个列出所有功能所需的所有 endpoints ,我们在所有 endpoints 上检查这个新类 .

我不确定这是否是解决问题的正确方法,但我找不到更好的方法 .