我正在尝试找到一种很好的方法来构建我的api网关的权限,以便从外部软件访问。
在我目前的公司,我们有一个API网关。
当用户登录时,我们将所有用户权限发送给前端服务,并为当前用户生成所有菜单和屏幕以及允许访问的内容。
示例:
{
user: joe,
permissions: [
'fancyMenu',
'anotherFancyMenu'
]
}
这种方法效果很好,但是现在我们需要将API暴露给其他客户端,他们将直接访问我们的端点。
因此,以前访问fancyStuff菜单的用户需要访问端点x,y,z才能完成操作。每个端点都必须检查记录的用户是否具有fancyStuff权限。 现在我们需要将API公开给其他软件。
在此示例中,权限fancyMenu需要访问这3个不同的端点才能完成操作。得到一些东西和花哨的硬币来创造一个新的奇特的操作。
fancyMenu -> POST /fancy
fancyMenu -> GET /coins/fancy
fancyMenu -> GET /stuff
话虽如此,我们在api网关上创建了一个新类,并将所有菜单权限映射到所需的端点。
一个例子是我们的菜单fancyMenu现在有一个列出了所有功能所需的所有端点,我们在所有端点上检查这个新类。
我不确定这是否是解决问题的正确方法,但我找不到更好的方法。