- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计一个基于微服务的应用程序,它有两个 API 端点,其中一个用于用户访问。使用 JWT 进行身份验证的用户可以属于不同的组织,这些组织又按层次组织。每个用户都可以有一些角色,这些角色是为每个组织类型定义的;组织和角色之间的组合定义了可以从用户(方法和资源)访问哪些 API。总之,它可能会变得一团糟!
有几个库提供了 ACL 功能,但我想知道把它们放在哪里:第一个解决方案似乎是 API 网关,它应该为每个请求调用一个组件。
- JWT 包含用户的角色 ID 列表-API 网关验证 JWT 并使用角色 ID 在每个角色都有权限列表的表中查找(例如可以 POST/users)-如果角色与请求匹配,则后者被转发到正确的服务;否则,网关响应 403
其他选项是将“auth-service”放入架构中。网关只是将所有请求转发到正确的服务,每个服务(可能依赖于一个公共(public)库)将 token 发送到 auth 服务并请求授权以满足请求。在这种情况下,auth 服务是/auth 资源下所有请求的“正确服务”,提供登录/注销、 token 刷新和新用户注册(例如当您单击登录邮件中提供的链接时)
第一个解决方案提供了一个“胖网关”,它在逻辑上有一个很小的层,但强制所有服务只响应安全调用,分解所有身份验证/组织逻辑,而不是在服务之间添加依赖性,但是
谢谢你的回答!!!
最佳答案
我回来分享我对围绕帖子主题做出的选择的看法。我遵循的方式是
API Gateway is aware of auth data sent along with requests (the "Authorization header" in practice) and does verifications. JWTs carry all necessary information, so the api gateway can apply its policies that are unknown to downstream services.
在我的架构中有一些 RBAC,没有什么可以放在 jwt 中,所以我们在网关上移动了访问控制逻辑。我们采用了一个自定义的 nodejs 库作为插件,但我不得不承认这弄乱了我们的网关,我们发现 authz 配置缓慢且容易出错。在这一方面,我们正在为缺乏与主要配置信息的集成而付出代价。它会很有用,比如
routes:
- route1:
path: /foos/:fooid/bar
downstreamService: http://foo.cluster
authz:
readerRole:
- GET
writerRole:
- POST
all:
- OPTIONS
但是,Api 网关不能独自完成所有事情:需要联系我称之为“身份提供者”的服务,这些服务将“消费者”概念模型化的实体封装到平台中:用户、设备、应用程序。我们的api网关根据JWT数据对identity进行GET,验证identity是否存在,是否一切正常。此外, token 生成/刷新不是 api 网关关注的问题,但有一个认证服务器(一个是独立的,另一个仍然嵌入到单体中)是连接的。所有这些都会产生大量负载,但可以通过“identites”缓存轻松缓解。请注意在身份发生变化时使缓存无效,或者至少尝试使用尽可能少的信息,这样您就可以只关心身份删除
我们的下一步将是制造/购买一个更结构化的身份验证服务器,它将继续与网关集成,但能够独立扩展并且更清晰和易于配置,可能带有某种 UI
作为云原生爱好者,我也在看istio除其他外,它具有身份验证功能,但我仍然需要了解是否适合我需要能够进行一些自定义的方法
关于architecture - API 网关和 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010721/
据我了解,无论如何,您的 Istio 网关前都会有一个 NLB 或 ALB? 但我很困惑,因为 Istio Gateway 似乎为 ALB 为第 7 层甚至更多做了很多事情? 所以我读了 ALB ->
只是一般的好奇,我还没有找到任何关于它的信息。 我最近开始学习微服务及其相关内容,例如 API 网关。我知道 API 网关可以是 Web 应用程序等的单一入口点。但是,如果有多个服务,每个服务都有自己
我对网关和虚拟机的设置有多个疑问,所以这就是我的实际情况。 我有一个应用程序网关和两个 VM Ubuntu,所有内容都托管在 Azure 上。它们都位于同一个虚拟网络上。两个虚拟机都只有一个私有(pr
在 spring-boot-integration 应用程序中,编写了一个自定义储物柜,在锁定之前重命名原始文件 (fileToLock.getAbsolutePath() + ".lock") 并预
网卡eth0 IP修改为 102.168.0.1 复制代码 代码如下: ifconfig eth0 102.168.0.1 netma
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章Linux系统下修改IP地址、网关、DNS的基本方法由作者收集整理,如果
我正在考虑改变我的背部将 rest api 微服务结束到 grpc 服务器。我使用 tyk 作为 api 网关来路由 http 请求。 api 网关如何处理 grpc 请求? 最佳答案 使用 gRPC
我在 AWS ApiGateway 上配置/使用身份验证时遇到了一些问题。我已经使用接收 AWS 身份验证模型的代码设置了我的 lambda 函数,见下文,它基本上解码 JWT token 并验证给定
虚拟网络网关与 VPN 网关之间有哪些区别?是什么决定了使用哪一个? 我能找到的最接近的定义是 “VPN 网关是一种特定类型的虚拟网络网关,用于通过公共(public) Internet 在 Azur
我有一个调用 _getFile 函数的输入字段 获取文件 _getFile(event) { this.loading = true; const file = event.target.f
对于微服务,常用的设计模式是 API-Gateway。我对它的实现和影响有点困惑。我的问题/疑虑如下: 为什么一般不讨论微服务的其他模式?如果是,那么我错过了他们吗? 如果我们部署一个网关服务器,那不
我们正在尝试将我们的单体核心拆分为微服务,并添加一些使用消息系统(例如 Kafka)相互连接的新服务。 下一阶段是创建 API 端点,以便通过 Api 网关在移动应用程序和微服务之间进行通信。 开发
我在本地网关上创建连接时遇到问题。 当我创建连接时,Vnet 网关是可选的,但当我选择它时,Azure 未填充或实际选择网关,不确定原因。我是否需要任何下标,或者我的 vnet 网关创建不正确? 最佳
我正在用 Java 开发 Web 服务。现在假设我有 10 项服务,并且我希望只能通过 Apigateway 访问我的所有服务。 现在假设我有一个 API 调用,需要调用 4 个服务,例如 A、B、C
我正在做一个学校项目,我的任务是制作一个简单的 api 网关,它可以放置在任何第 3 方 api 和最终用户之间,该网关可用于定义 api 的使用限制或做一些安全分析,我对此完全陌生,我知道API网关
我正在尝试集成 AWS Api Gateway 和 AWS Lambda, 我能够调用 Lambda 函数并获得响应。 但是当我使用 AWS API Gateway 并使用 GET 方法调用我的 La
我对 Spring 和 Activiti 都是个菜鸟,所以这应该是一个很大的问题。如果我的问题结构不佳或其他什么问题,我提前道歉。 这是我的 Activity 图的一部分: 首先要做的事情: 在服务任
我正在尝试将 API 网关与 Lambda 代理集成, API 服务器接收带有这些参数的请求,即邮政编码和房屋 https://api.domain.com/getAddressproxy?postc
在我们的案例中,我们需要用户在注册期间或进行任何业务交易之前预先批准他们的付款。 一旦授权,我们需要每月从他们的账户中扣除 $X。X 将根据他们当月的收入而有所不同。此外,对于某些用户,我们需要每月支
我正在尝试使用 ActiveMerchant 创建一个 Paypal express 交易。有没有办法将收款人设置为负责支付任何应计费用的实体? payment_hash = { ip: ip
我是一名优秀的程序员,十分优秀!