Доступ к API микросервиса за шлюзом JHipster - PullRequest
0 голосов
/ 31 октября 2019

Я сгенерировал стек микросервисов с аутентификацией на основе токенов JWT с использованием Jhipster;

  1. Регистр JHipster
  2. Шлюз JHipster
  3. foo Микросервис

Я сгенерировал bar сущность как в foo microservice, так и в Gateway (повторно используя существующую сущность microservice). Я могу добавить / удалить объект bar из интерфейса шлюза - все хорошо.

Тем не менее, мой реальный сценарий использования - это возможность доступа к bar с помощью URL https://gateway.com/api/bar, как я могу управлять account и user ресурсами - как мне этого достичь ? Когда я пытаюсь получить доступ к сервису через https://gateway.com/services/bar, в журналах шлюза появляется ошибка ниже:

Access Control: filtered unauthorized access on endpoint /services/bar

Ниже выводится https://gateway.com/gateway/routes, и сервис хорошо идентифицирован.

[
  {
    "path": "/services/bar/**",
    "serviceId": "bar",
    "serviceInstances": [
      {
        "port": 8083,
        "host": "1.1.1.1",
        "uri": "http://1.1.1.1:8083",
        "serviceId": "BAR",
        "secure": false,
        "instanceId": "bar:16913f331d6f6489adba78d107cf7a2e",
        "instanceInfo": {
          "instanceId": "bar:16913f331d6f6489adba78d107cf7a2e",
          "app": "bar",
          "appGroupName": null,
          "ipAddr": "1.1.1.1",
          "sid": "na",
          "homePageUrl": "http://1.1.1.1:8083/",
          "statusPageUrl": "http://1.1.1.1:8083/management/info",
          "healthCheckUrl": "http://1.1.1.1:8083/management/health",
          "secureHealthCheckUrl": null,
          "vipAddress": "bar",
          "secureVipAddress": "bar",
          "countryId": 1,
          "dataCenterInfo": {
            "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
            "name": "MyOwn"
          },
          "hostName": "1.1.1.1",
          "status": "UP",
          "overriddenStatus": "UNKNOWN",
          "leaseInfo": {
            "renewalIntervalInSecs": 5,
            "durationInSecs": 10,
            "registrationTimestamp": 1572420926773,
            "lastRenewalTimestamp": 1572459999227,
            "evictionTimestamp": 0,
            "serviceUpTimestamp": 1572420926137
          },
          "isCoordinatingDiscoveryServer": false,
          "metadata": {
            "git-branch": "xxx",
            "git-version": "xxx",
            "zone": "primary",
            "profile": "prod",
            "management.port": "8083",
            "version": "0.0.1-SNAPSHOT",
            "git-commit": "xxx"
          },
          "lastUpdatedTimestamp": 1572420926773,
          "lastDirtyTimestamp": 1572420925996,
          "actionType": "ADDED",
          "asgName": null
        },
        "metadata": {
          "git-branch": "xxx",
          "git-version": "xxx",
          "zone": "primary",
          "profile": "prod",
          "management.port": "8083",
          "version": "0.0.1-SNAPSHOT",
          "git-commit": "xxx"
        },
        "scheme": null
      }
    ]
  }
]

Я также не могу видеть документы API микросервисов в документах шлюза Swagger - при выборе из выпадающего меню, я вижу сообщение ниже;

Can't read swagger JSON from https://gateway.com/services/bar/v2/api-docs

Inжурнал шлюза, я вижу;

Access Control: allowing access for /services/bar/v2/api-docs, as no access control policy has been set up for service: bar

JHipster 6.4.1

РЕДАКТИРОВАТЬ

Первая часть проблемырешен, т. е. доступ через API - проблема была с API UR:

вместо https://gateway.com/services/bar, доступным через https://gateway.com/services/bar/api/bars

Документация по подсистемам микросервисов все еще недоступна на шлюзе!

...