Я сгенерировал стек микросервисов с аутентификацией на основе токенов JWT с использованием Jhipster;
- Регистр JHipster
- Шлюз JHipster
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
Документация по подсистемам микросервисов все еще недоступна на шлюзе!