Istio的JWT认证授权

本文介绍了JWT(Json Web Token)的工作原理及其在Istio中的应用。JWT token由Header.Payload.Signature三部分组成,用于传递可信数据。在Istio中,JWT用于终端用户的访问控制,通过验证JWT claims中的角色信息来实施授权策略。文中通过创建测试服务、配置JWT认证和授权策略,展示了如何实现基于JWT的访问控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、理解JWT
  JWT(Json Web Token)是一种多方传递可信JSON数据的方案,一个JWT token由.分隔的三部分组成:{Header}.{Payload}.{Signature},其中Header是Base64编码的JSON数据,包含令牌类型typ、签名算法alg以及密钥ID kid等信息;Payload是需要传递的claims数据,也是Base64编码的JSON数据,其中有些字段是JWT标准已经有了的字段,如:exp、iat、iss、sub和aud等等,也可以根据需求添加自定义字段;Signature是对前两部分的签名,防止数据被篡改,以此确保token信息是可信的,Istio中验签所需的公钥由RequestAuthentication资源的JWKS配置提供。
  JWT授权则是对终端用户的访问控制,试想某个内部服务需要管理员才能访问,这时候就需要验证终端用户的角色是否为管理员,可以在JWT claims中带有管理员角色信息,然后在授权策略中对该角色授权。不同的协议的流量在操作to方面有比较多的示范,这里主要在来源from和自定义条件when做示范。
  在这里插入图片描述

二、配置JWT 
在这里插入图片描述
在这里插入图片描述
1)创建测试服务

➜  ~  kubectl create ns testjwt 
namespace/testjwt created

➜  ~  kubectl apply -f <(istioctl kube-inject -f samples/httpbin/httpbin.yaml) -n testjwt  
serviceaccount/httpbin created
service/httpbin created
deployment.apps/httpbin created

➜  ~  kubectl get pods -n testjwt  
NAME                       READY   STATUS    RESTARTS   AGE
httpbin-5cd8878b49-hzwnp   2/2     Running   0          21s

➜  ~  kubectl apply -f <(istioctl kube-inject -f samples
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值