我有一个django应用程序,它将任务放入队列中。另一个服务用于读取该队列并处理一些文件。最后,我需要将处理后的文件保存在django应用程序管理的数据库中。
我不想直接授予 microservice 访问数据库的权限,因为我只想负责处理文件。
所以我想使用HTTP请求将更改发布到django。问题是,即使我知道将接受这种计算机发出的HTTP指令,我当时也没有任何授权。
对于Django应用程序,我使用JWT作为授权令牌。解决此类问题的最佳方法是什么?也许只是将令牌一起发送到队列?但是如何制作这样的令牌?不确定何时执行该过程。
答案 0 :(得分:0)
当您认真考虑时,如果内部服务位于同一网络中,则无需进行身份验证。
在这种情况下,您可以将Django放在API网关的后面(不要自己编写,要找到一个开源的,高度评价的项目)。然后,您可以通过此网关控制哪个流量源允许哪个端点。然后,您可以轻松控制专门用于内部服务的端点,以及哪些端点需要外部实体进行身份验证。
如果它们不在同一个网络中(这意味着它们之间被巨大的多云网隔开),那么两台计算机进行通信的通常方法是使用API密钥。在这种情况下,您可以使用对称密钥或专用/公用对配置服务,这并不重要。可以使用密钥信任计算机。为什么需要在队列中发送令牌?如果允许该服务将结果发布到Django,则允许该服务针对所有请求发布结果,因此需要使用一个API密钥对其进行配置,该密钥告诉您的API允许发布已处理的文件。