【发布时间】:2020-11-30 22:57:15
【问题描述】:
大家好,我在本地节点 minikube 和 istio 上设置和外部身份验证系统时遇到问题。我已经在 helloworld 上设置了两个部署,另一个是 auther 。我想要的是通过将请求发送到 /auther 路由来授权对 /hello 路由的所有请求,该路由将连接到 auther 服务,如果设置了特定的标头(如授权中的 jwt 令牌),则返回 200 状态或 401 状态(如果没有)已设置。 我尝试使用这个使用 envoy ext auth 过滤器的配置文件,但没有任何效果。尽管所有传递给 /hello 的请求都得到 403,但它没有向我的 auther 服务发送任何请求。 这是我对 envoy ext-auth 过滤器的配置:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: ext-auth
# namespace: istio-system
namespace: default
spec:
workloadSelector:
labels:
app: helloworld
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
portNumber: 5000
filterChain:
filter:
name: "envoy.http_connection_manager"
subFilter:
name: "envoy.router"
patch:
operation: INSERT_BEFORE
value:
#name: envoy.filters.http.ext_authz
name: envoy.ext_authz
typed_config:
"@type": type.googleapis.com/envoy.config.filter.http.ext_authz.v2.ExtAuthz
http_service:
server_uri:
uri: http://auther.default.svc.cluster.local:3000
cluster: outbound|3000||auther.default.svc.cluster.local
timeout: 3s
# authorizationRequest:
# allowedHeaders:
# patterns:
# - exact: "cookie"
【问题讨论】:
-
你的 istio 版本是多少?您的两个服务都在默认命名空间中?您的默认命名空间是否已注入?有一个 example envoy 过滤器可以为所有请求添加自定义标头,您可以尝试一下并告诉我这是否适合您?
标签: authentication kubernetes service istio minikube