【问题标题】:Make sure a request is coming from another container in the network in docker-compose确保请求来自 docker-compose 中网络中的另一个容器
【发布时间】:2020-05-10 09:57:27
【问题描述】:

有时简单的任务似乎更复杂。这就是我现在所面临的。

我正在开发电子商务 API。该应用程序具有基于微服务的架构。所以,OrderProductPaymentAuth 这些是不同的微服务。每个都有自己的数据库。

这些微服务通过http restful apis 相互通信。因此,如果用户下订单,它会与支付微服务通信以获取生成的校验和,以便他可以进行支付。支付微服务与Order 交谈以下订单。

Order 微服务下订单并将详细信息返回给付款。没问题。

但下单后,产品数量必须减少。我没有任何 API 来减少产品数量。我不想拥有一个。

因为,产品只能由其供应商修改。供应商确实可以更改他的产品,但为此他通过了他的jwt

如果我制作一个API来改变产品数量,任何人都可以点击该api并减少数量。

因此,一种解决方案可以是只能由微服务访问的 API。

我如何知道调用来自微服务?

我应该创建一些hash 并在与其他微服务交互时传递它吗?

Docker-compose.yml


    version: '3'
services:
  users:
    build: './users'
    ports:
      - '4001:3000'
    volumes:
      - './users:/src/'
  products:
    build: './products'
    ports:
      - '4002:3000'
    volumes:
      - './products:/src/'
  orders:
    build: './orders'
    ports:
      - '4003:3000'
    volumes:
      - './orders:/src/'
  payments:
    build: './payments'
    ports: 
      - '4004:3000'
    volumes: 
      - './payments:/src/'

Dockerfile

#User node js official image as a parent image
FROM node

ADD package.json /tmp/package.json

RUN cd /tmp && npm install

RUN mkdir -p /src && cp -a /tmp/node_modules /src/

COPY . /src

WORKDIR /src

RUN npm install

EXPOSE 3000

CMD npm start

【问题讨论】:

    标签: node.js docker docker-compose microservices


    【解决方案1】:

    我将为这个问题提供更广泛的视角。

    您尝试做的事情可以使用具有不同用户类别和访问权限的任何应用程序需要的 RBAC(基于角色的访问控制)来解决。根据您的描述,存在三类用户

    1. 买家
    2. 供应商
    3. 管理员

    每个类别的用户都有不同的访问权限集合,买家最少对管理员所有的访问权限。

    一般的想法是当用户进行身份验证时,它会根据他所属的组获得一个令牌。令牌包含访问权限。令牌被传递到所有后续的 api 端点。令牌定义了用户能够做什么。因此,在您的情况下,如果产品服务具有减少数量的端点,则只有管理员或供应商有权这样做。您可以使用基于 OAuth 的授权框架。

    参考文献

    【讨论】:

    • 谢谢,但我已经知道了,这就是我提到 jwt 的原因。它包含角色,因此定义了他们的访问权限。
    • 然后您可以创建一个服务帐户类型并将其用于微服务-微服务通信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多