如何使用 api 网关限制资源访问

Posted

技术标签:

【中文标题】如何使用 api 网关限制资源访问【英文标题】:How to restrict resource acess with an api gateway 【发布时间】:2020-11-21 19:57:16 【问题描述】:

我正在实施一个简单的基于微服务的项目,但我在身份验证方面遇到了一些疑问。我的疑问更多是关于最佳实践,而不是在技术上做什么。

我有什么:

假设我有几个 API 还有一个 API 网关负责路由和身份验证 我正在使用身份提供程序 (keycloak) 进行身份验证(基于 JWT)

我想知道的:

假设我有一个像 api/user/<user_id> 这样的端点,它与 POST 请求一起使用,它会更改有关用户的信息。

为此,我不仅需要检查是否是经过身份验证/允许的用户,还必须检查尝试访问它的用户是否是自己的用户。

我的问题是,最好在 API 网关中执行,还是 API 网关需要将 JWT 传递给 API 以便它可以在控制器上检查?

我正在使用 spring-boot 作为 api Netflix 的 API 网关 Zuul 代理 用于处理身份验证的 Keycloak

【问题讨论】:

【参考方案1】:

API Gateway 的唯一用途是请求路由、身份验证和负载平衡。 应该在该微服务中检查用户是否有权修改并做出决定。

【讨论】:

以上是关于如何使用 api 网关限制资源访问的主要内容,如果未能解决你的问题,请参考以下文章

微服务授权。如何防止具有有效 JWT 的用户访问其他用户的资源?

react设置静态资源访问

在IdentityServer4中限制用户级别的api资源

当访问令牌中没有身份时,如何使用 JWT 限制用户使用他们的资源?

如何允许API网关代理与POST请求的Cognito Authorizer集成?

如何使用 Windows Native API 访问 PE 资源?