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

问题描述 投票:0回答:1

我在API Gateway后面有一些无状态的微服务,我想确保包含有效授权JWT令牌的用户请求不能访问其他用户的资源。

目前,我的API Gateway只在JWT没有过期且有效的情况下进行验证。

为了防止含有有效JWT令牌的用户请求访问其他用户的资源,我打算使用Spring的方法级安全,检查主用户id是否与请求URL路径中的userId匹配。 但这意味着,在每个微服务中,我需要添加Spring Security,创建一个授权过滤器,并根据从JWT读取的信息创建一个安全上下文。我需要在每一个微服务中重新创建Spring安全上下文。

这是一个正确的方法吗?如果不是,还有什么方法可以防止包含有效JWT的用户请求访问其他用户的资源?

请给我建议。

spring-boot jwt authorization microservices api-gateway
1个回答
2
投票

你的处理方式通常是正确的方法。为了让每个服务与其他服务保持脱钩,重要的是它能够确定哪些方法endpoints关心用户范围,哪些不关心。网关中更多的规则和逻辑意味着对各个服务的限制更多。

也就是说,如果你有适用于所有服务的全局可预测的规则,你就有理由把逻辑放在网关中。像 JWT 验证这样的规则就是一个例子,这种规则足够标准化,您可以假设底层服务在收到令牌后会想做什么(验证)。如果您有一个可以安全地在全局范围内应用的规则,您可以将其从服务中提取出来,并将其放在网关中。否则,你最好有点重复,这样你就不会产生障碍,阻止服务以不同方式处理输入。

© www.soinside.com 2019 - 2024. All rights reserved.