API网关与微服务端点中的授权

时间:2019-10-21 17:45:52

标签: security design-patterns architecture authorization microservices

我正在尝试构建微服务架构。我已经了解到API网关的一些好处,例如:负载平衡,调用多个微服务并汇总结果,缓存管理等。因此,我决定将其包含在系统中。

我的问题是我应该在网关层还是在每个微服务端点分别实现授权?例如,在网关上对用户进行身份验证并以解密形式传递用户声明,以将其用于授权逻辑中的每个服务调用?

这似乎很有意义,并且节省了在调用每个服务之前授权一些聚合的处理时间。但是,授权逻辑实际上是单个服务的关注点。

您有什么建议?

2 个答案:

答案 0 :(得分:1)

每个微服务端点。在API网关中实施授权将使您的系统僵化。如果在以后的任何阶段都必须分离授权逻辑(例如,内部用户,外部用户,开放api)。这将很难合并。 授权应在每个API级别进行。

答案 1 :(得分:1)

您可以使用API​​网关模式/ API网关。然后,您还可以分担微服务的身份验证/授权责任。对于调用服务的用户或开发人员而言,这将很容易。 API GW甚至支持外部/内部GW。它可能支持角色库权限。例如:WSO2 APIM。

拥有API / MS GW后,您将获得以下优势:  -API网关是任何微服务调用的单入口。  -它可以用作将请求路由到相关微服务的代理服务。  -它可以汇总结果以发送回消费者。  -此解决方案可以为每种特定类型的客户端创建细粒度的API。  -它还可以转换协议请求并做出响应。