如何使用 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 的用户访问其他用户的资源?
当访问令牌中没有身份时,如何使用 JWT 限制用户使用他们的资源?