In AuthorioPolicy Как сопоставить пути, включая параметры строки запроса - PullRequest
0 голосов
/ 17 марта 2020

В настоящее время я использую istio 1.4 и включил Policy для проверки jwt.
Я включил AuthorizationPolicy с этим правилом:

  rules
  - to:
    - operation:
        methods: ["GET"]
        paths: [
          "/render/checkout"
        ]
    when:
    - key: request.auth.claims[roles]
      values: ["USER"]

Когда я нажимаю на этот путь с мой JWT, все работает отлично. Проблема в том, что когда я нажимаю на тот же URL с параметром строки запроса, например /render/checkout?sort=asc, я получаю RBAC: access denied.
, чтобы обойти это, я заканчиваю тем, что добавляю путь, включающий знак вопроса и подстановочный знак:

paths: [
          "/render/checkout", "/render/checkout?*"
        ]

но имея много путей и множество микросервисов, я чувствую, что этого не должно произойти, как это происходит, потому что это очень многократно и подвержено ошибкам.

Я знаю, что на github уже есть проблема *1016* о поддержке регулярных выражений в путях, но в настоящее время:

Можно ли избежать дублирования каждого из моих путей, один без параметров строки запроса а второй с параметрами строки запроса?

1 Ответ

1 голос
/ 17 марта 2020

Существует проблема github , когда несколько дней кто-то задавал один и тот же вопрос go, что приводит нас к проблеме github, которую вы добавляете .

Специально для этой части ответ члена github @ GODBS.


Нет другого способа исключить пути для JWT, кроме как использовать политику авторизации, которая не допускает регулярное выражение.


Можно ли избежать дублирования каждого из моих путей, одного без параметров строки запроса и второго с параметрами строки запроса?

Итак, насколько я понимаю в настоящее время нет другого способа заставить его работать. Обходной путь на данный момент заключается в добавлении других путей, как вы сделали.

Я предполагаю, что они добавят его в будущем, вопрос здесь в том, сколько времени это займет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...