我有一个使用Graphene和Flask构建的GraphQL API。该API当前仅用作网站的后端,并且包含搜索,创建订单等操作。某些操作是完全公开的,某些操作仅限于登录用户。目前,我使用JWT令牌进行用户身份验证。我想合并另一级别的授权,这是考虑到请求的来源。我看到的所有示例仅使用一个维度-用户。有一个已登录用户(可能具有某些角色/作用域)或没有用户。这就是我目前所执行的。但是,我想引入另一个维度-起源。几个例子:
我可以想到几种方法,但我不太喜欢其中的一种方法:
如何解决此类问题的实际标准是什么?
答案 0 :(得分:0)
使用API网关-部分是它们的用途。例如,看看Kong或Apigee。还有很多。
用于基本访问控制,例如匿名与认证或限制,他们应该能够处理。有关其他授权方案,请查看基于属性的访问控制(abac)。这是一种使用alfa编写的策略来实现外部授权的方法。这样您就可以处理任何类型的授权。我为Axiomatics工作的公司专门从事API授权。我们使用ALFA并与Kong之类的东西整合(他们进行拦截)。</ p>