【问题标题】:Authorization of microservices in monolith application单体应用中的微服务授权
【发布时间】:2019-06-04 07:38:45
【问题描述】:

我有一个将任务放入队列的 django 应用程序。另一个服务用于读取该队列并处理一些文件。最后,我需要将处理后的文件保存在 django 应用程序管理的数据库中。

我不想让 微服务 直接访问数据库,因为我只想负责处理文件。

所以我想使用 HTTP 请求将更改发布到 django。问题是我当时没有任何授权,即使我知道来自这种类型机器的 HTTP 将被接受。

对于 django 应用程序,我使用 JWT 作为授权令牌。解决此类问题的最佳方法是什么?也许只是将一个令牌一起发送到队列中?但是如何制作这样的令牌呢?不确定何时执行该过程..

【问题讨论】:

    标签: django jwt microservices


    【解决方案1】:

    当您真正考虑时,如果您的内部服务在同一个网络中,则无需对其进行身份验证。

    在这种情况下 - 您可以将 Django 放在 API 网关后面(不要自己编写,找一个开源的高评价项目)。然后您可以通过此网关控制哪个流量源允许哪个端点。然后,您可以轻松控制专门用于内部服务的端点以及哪些端点需要外部实体的身份验证。

    如果它们不在同一个网络中(这意味着它们被云网的巨大鸿沟隔开),那么两台机器通信的通常方式是使用 API 密钥。在这种情况下,您可以使用对称密钥或私有/公共对配置您的服务,这并不重要。可以使用密钥信任机器。为什么需要在队列中发送令牌?如果允许该服务将结果发布到 Django,则它允许对所有请求执行此操作,因此它需要配置一个 API 密钥,告诉您的 API 允许它发布处理过的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 2017-12-09
      • 2020-09-27
      • 1970-01-01
      • 2016-07-17
      • 2016-05-19
      • 2018-10-12
      • 2020-10-11
      相关资源
      最近更新 更多