gpt4 book ai didi

spring-boot - 在 API 网关级别与在单个微服务级别解码 OAuth2 JWT

转载 作者:行者123 更新时间:2023-12-03 16:40:35 25 4
gpt4 key购买 nike

我使用 Spring Boot 1.5.x + OAuth2 和 JWT 开发了一组微服务(资源服务器)。现在每个微服务都使用 Spring Security 进行保护,即 JWT 访问 token 在单个资源服务器级别进行验证。 API Gateway 没有适当的 spring 安全性,因此它只是将请求路由到适当的服务器并将身份验证 header 传播到下游服务。

我想知道与仅在 API 网关级别验证 AccessToken 的设置相比,此设置是否有任何缺点。或者这只是一个意见问题?在 API 网关级别保持安全性是否违反了松散耦合的原则,因为每个微服务可能会更好地理解给定用户在其自身上下文中的角色?

最佳答案

API 管理可以对您的 JWT 进行小规模检查(提前失败),但您的微服务是唯一可以真正管理所有安全内容的服务!

如果您仅在 api 管理上设置安全性,则意味着可以访问您网络的人将能够在未经身份验证的情况下将请求推送到您的 API。
您将无法记录谁在做什么。最后,如果您需要设置某种ACL,这是不可能的(当您要求列出订单时,您只能列出您的订单)。

也许您会考虑在 api 管理层解码您的 JWT 并将带有用户名的 header 推送到您的后端,以防止我上面提到的所有事情,但我认为这不是一个很好的做法。

首先,访问网络意味着我可以成为任何人。那么 JWT 不仅仅是一个用户名。例如,也许您在身份验证层上使用范围。 (范围读取订单/范围修改订单/范围删除订单)。这对于限制应用程序可以做什么(在 client_id 级别)或用户接受给应用程序的内容(范围共享电子邮件...)很有用。
对于后台的这个 JWT 是强制性的。

好的,您可以像用户名一样在 api 管理上提取数据并将特定的 header 放在调用后端,但真的吗?为什么要做具体的东西?带有 JWT 的 oauth2 可以为您做到这一点。

关于spring-boot - 在 API 网关级别与在单个微服务级别解码 OAuth2 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51524648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com