微服务体系结构中docker容器之间的身份验证,绕过JWT auth进行内部调用
我有以下docker架构,由docker compose协调:微服务体系结构中docker容器之间的身份验证,绕过JWT auth进行内部调用,docker,authentication,microservices,Docker,Authentication,Microservices,我有以下docker架构,由docker compose协调: 服务1:前端应用程序,react应用程序 Service2:ExpressJS服务器 服务3:Django服务器 这三个应用程序通过HTTP API调用相互通信。谁可以给谁打电话没有限制。每个应用程序都是外部公开的 用户在前端应用程序(Service1)上进行身份验证,并解析一个JWT,该JWT随后可以传递给其他每一个后续调用,然后每个其他服务都有一个身份验证层来验证JWT调用 我的问题是:如何在没有任何用户活动(没有JWT)的
- 服务1:前端应用程序,react应用程序
- Service2:ExpressJS服务器
- 服务3:Django服务器
networks:
our-network:
ipam:
driver: default
config:
- subnet: "172.100.100.0/24"
然后,在Service2和Service3中,我允许来自该子网的API调用未经身份验证。
我担心这可能是一个安全问题,不知道是否有更好的解决方案。JWT令牌通常使用令牌颁发者的私钥进行签名。将JWT令牌作为一个标记是一个很好的实践
JWT令牌通常可以通过两种方式进行验证:
- 通过调用发卡机构的,但这会增加更多的延迟
- 使用来自颁发者的缓存公钥进行本地验证-难以添加注销功能
对于代表用户执行的作业,通常需要将过期时间较长的JWT令牌存储在数据库中。通常,这可以由用户撤销,通常在3个月左右到期,然后用户可能需要再次验证(或超过3个月-取决于您的需要)。重要的是,此类令牌具有较低的权限,通常只有作业所需的权限。今天来到这里询问相关问题。稍后将发布。感谢您的回答,但恐怕它不完全符合我的用例。我知道JWT身份验证方法以及如何使用它,但问题是如何在没有用户交互的情况下绕过API调用的JWT身份验证。OPA还假设实际有一个用户需要验证,而我需要在没有任何我了解的用户的情况下打一些内部电话,并在我的回答中添加了一个澄清。。。。同时将JWT传递给下一个服务。@NicolòGasparini我还扩展了我对乔布斯的回答。