文章中使用到的相关资源下载处:istio 实战:JWT认证
前言
请求认证策略指定验证 JSON Web Token(JWT)所需的值。这些值包括:
- token 在请求中的位置
- 请求的 issuer
- 公共 JSON Web Key Set(JWKS)
Istio 会根据请求认证策略中的规则检查提供的令牌(如果已提供), 并拒绝令牌无效的请求。当请求不带有令牌时,默认将接受这些请求。 要拒绝没有令牌的请求,请提供授权规则,该规则指定对特定操作(例如,路径或操作)的限制,即 istio 授权 AuthorizationPolicy CRD
环境准备
-
创建命名空间 mm-foo,开启 istio sidecar 自动注入
kubectl create ns mm-foo kubectl edit ns mm-foo # 在 label 处添加 "istio-injection: enabled"
-
创建 httpbin 应用,创建对应的虚拟服务和网关资源
kubectl apply -f httpbin.yaml kubectl apply -f httpbin-gw-vs.yaml
-
根据 vs 和 gw 配置的域名,修改主机 hosts 文件
-
验证 httpbin 功能是否正常工作
启用 JWT 验证
-
创建请求身份验证以启用 JWT 验证
kubectl apply -f requestAuth.yaml
-
这个请求身份验证将在 Istio 网关上启用 JWT 校验
-
这个请求身份验证只应用于入口网关
请求身份验证将只检查请求中是否存在 JWT
要使 JWT 成为必要条件, 如果请求中不包含 JWT 的时候就拒绝请求, 请应用任务中指定的授权策略