Я хочу принудительно добавить поле в req.body, в соответствии с областью полномочий. У меня есть 2 приложения (App1 и App2), и в зависимости от того, кто использует мой API, я хочу программно добавить поле в запросе. Таким образом, учетные данные App1 имеют область действия app1
и app2
в областях действия App2.
Кроме того, у меня есть 2 среды с разными конечными точками. Оба приложения имеют доступ к обоим концам (используя разные учетные данные). Поэтому сначала я выбираю Env (используя область действия dev_env
или my_env
), затем проверяю, к какому приложению осуществляется доступ (проверяя область действия app1
или app2
).
Для этого я использую выражение apiEndpoint.scopes.indexOf('app1')>=0
. это на самом деле не работает, так как условие всегда false . Поэтому для отладки я помещаю содержимое apiEndpoint.scopes
в качестве дополнительного поля в req.body
, чтобы увидеть, что в этом есть.
И я вижу, что apiEndpoint.scopes
имеет только ["my_env"]
, а не "app1". Почему?
Итак, у меня есть
http:
port: ${PORT:-8080}
host: ${HOST:-localhost}
apiEndpoints:
myEndpoint:
host: "*"
scopes: ["my_env"] # I explain just this one here
devEndpoint:
host: "*"
scopes: ["dev_env"]
serviceEndpoints:
myEndpoint:
url: 'https://myserver'
policies:
- basic-auth
- cors
- expression
- key-auth
- request-transformer
- rewrite
- oauth2
- proxy
- rate-limit
pipelines:
myEndpoint:
apiEndpoints:
- myEndpoint
policies:
- request-transformer:
-
condition:
name: allOf
conditions:
- # check if scope 'app1' is present. expression not working
#name: expression
#expression: "apiEndpoint.scopes.indexOf('app1')>=0"
action:
body:
add:
available_scopes: "apiEndpoint.scopes" # debug of available scopes.
И содержание req.body:
{"available_scopes": ["my_env"]}
'app1' отсутствует!
= === update 1 Если в поле req.body.available_scopes
я поставил "потребитель", я получил это:
{
"type": "application",
"isActive": true,
"id": "....",
"userId": "...",
"name": "...",
"company": "...",
"authorizedScopes": [
"my_env"
]
}
Так что это говорит о "авторизованных областях", где остальные? Как я мог их увидеть? Спасибо