Веб-браузер в обход аутентификации конечного пользователя Istio - PullRequest
0 голосов
/ 30 апреля 2019

Странные вещи происходят!

У меня есть Keycloak и простое Httpbin приложение в моем кластере.

У меня есть настройки Istio для аутентификации пользователей с помощью Keycloak (как описано в Документация Istio )

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: auth-token
spec:
  targets:
    - name: httpbin
  origins:
    - jwt:
        issuer: "http://10.233.11.203/auth/realms/istio"
        jwksUri: "http://10.233.11.203/auth/realms/istio/protocol/openid-connect/certs"
  principalBinding: USE_ORIGIN

При следующей настройке конфигурации при попытке:

curl <IP_OF_HTTPBIN>

Я получаю Origin authentification failed что является абсолютно нормальным , поскольку я не предоставил токен доступа.


Теперь, когда я использую свой веб-браузер для доступа к приложению, я ожидаю, что некоторыеошибка, но НЕТ, это работает ...

Моя проблема в том, что это не должно работать .Браузер не авторизован БОЛЬШЕ, тогда команда curl была ...


Для получения информации я получаю доступ к приложению через браузер, используя kubectl port-forward и обратный прокси.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

kubectl port-forward перенаправляет трафик с локального хоста вашей машины напрямую в модуль k8, минуя всю аутентификацию Istio. Когда вы запускаете curl против публичного ip httpbin, запрос обрабатывается шлюзом Istio и проверяется токен jwt.

Проверка Istio JWT происходит вниз по течению и не зависит от вашего модуля. Если вы нажмете на свой модуль напрямую, вы намеренно обойдете аутентификацию конечного пользователя в целях разработки. Это позволяет разрабатывать службы независимо от того, как они проходят проверку подлинности.

0 голосов
/ 30 апреля 2019

Я нашел способ исправить это ... Если я использую шлюз для доступа к приложению, браузер также получает Origin authentification failed.

Но это не объясняетпочему в первую очередь браузер игнорирует политику istio, а curl - нет ...

...