У меня есть контейнер, который запускает службу http / rest, для которой требуется базовый c auth. Я настроил istio для обслуживания запросов к этому контейнеру. Служба работает правильно в кластере без istio.
При запросе службы с помощью curl istio-envoy возвращается статус 401 и сообщение «Для доступа к этому ресурсу требуется полная аутентификация».
Я могу получите ту же ошибку, войдя в контейнер и запросив localhost без предоставленных данных аутентификации. Таким образом, судя по всему, istio не пересылает заголовок аутентификации basi c.
Журнал контейнера никогда не подтверждает попытку входа, я вижу только сообщение журнала 401 в контейнере посланника.
Я пробовал как с включенным, так и с отключенным mtls. Шлюз прослушивает порт 443 и пересылает службу на порт 80
. Как настроить istio для пересылки basi c auth в мой контейнер
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: mfm-gateway
namespace: mfm-istio
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- dev-mfm-istio.testing.co.uk
tls:
mode: SIMPLE
serverCertificate: /etc/istio/testing-co-uk-certs/tls.crt
privateKey: /etc/istio/testing-co-uk-certs/tls.key
caCertificates: /etc/istio/testing-co-uk-certs/ca.crt
httpsRedirect: true
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mfm-virtualservice
namespace: mfm-istio
spec:
hosts:
- "dev-mfm-istio.testing.co.uk"
gateways:
- mfm-istio/mfm-gateway
http:
- name: "Auth"
match:
- uri:
prefix: "/auth"
route:
- destination:
host: authentication-service.mfm-istio.svc.cluster.local
port:
number: 80
- name: "Base"
route:
- destination:
host: web-application-service.mfm-istio.svc.cluster.local
port:
number: 80
localhost: curl -ik https://dev-mfm-istio.testing.co.uk/auth/oauth/token -d username=admin -d password=lolpassword -d grant_type=password -d scope=a -H -u admin
HTTP/2 401
pragma: no-cache
www-authenticate: Bearer realm="authentication-service", error="unauthorized", error_description="Full authentication is required to access this resource"
cache-control: no-store
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
x-frame-options: DENY
content-type: application/json;charset=UTF-8
date: Fri, 17 Apr 2020 13:51:43 GMT
x-envoy-upstream-service-time: 4
server: istio-envoy
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}