# Copyright Istio Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##################################################################################################
# httpbin service
##################################################################################################
apiVersion: v1
kind: ServiceAccount
metadata:
name: httpbin
namespace: mm-foo
---
apiVersion: v1
kind: Service
metadata:
name: httpbin
namespace: mm-foo
labels:
app: httpbin
service: httpbin
spec:
ports:
- name: http
port: 8000
targetPort: 80
selector:
app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpbin
namespace: mm-foo
spec:
replicas: 1
selector:
matchLabels:
app: httpbin
version: v1
template:
metadata:
labels:
app: httpbin
version: v1
spec:
serviceAccountName: httpbin
containers:
- image: docker.io/kong/httpbin
imagePullPolicy: IfNotPresent
name: httpbin
ports:
- containerPort: 80
istio 实战:JWT 认证
需积分: 0 90 浏览量
更新于2024-01-05
收藏 2KB ZIP 举报
在微服务架构中,Istio 作为一款强大的服务网格工具,提供了丰富的功能,包括服务间的通信、流量管理、安全性和遥测等。本实战主要关注的是 Istio 的安全性方面,特别是 JSON Web Token (JWT) 认证的实现。JWT 是一种轻量级的身份验证和授权机制,广泛用于分布式系统中。
JWT 认证在 Istio 中的角色是确保只有经过身份验证的用户和服务能够访问特定的资源。以下将详细介绍如何在 Istio 中配置和使用 JWT 认证。
我们需要了解 Istio 中的认证策略(Authentication Policy)。这是定义服务间或者客户端到服务端认证规则的核心组件。通过创建一个 Authentication Policy,我们可以指定哪些服务需要 JWT 认证,以及如何验证这些 JWT。
```yaml
apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
name: jwt-policy
spec:
targets:
- name: example-service
peers:
- mtls:
origins:
- jwt:
issuer: "https://jwt-issuer.example.com"
jwksUri: "https://jwt-issuer.example.com/jwks"
```
上述示例中,我们为名为 `example-service` 的服务定义了一个认证策略,要求连接它的客户端必须提供有效的 JWT。`issuer` 指定了 JWT 的签发者,而 `jwksUri` 提供了公共密钥,用于验证 JWT 的签名。
接着,我们需要设置 JWT 的注入。Istio 提供了 Sidecar Injector 来自动将 Envoy 代理附加到每个服务的 Pod 中,以处理 JWT 的验证。这通常通过 Kubernetes 的注解完成。
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
annotations:
sidecar.istio.io/inject: "true"
spec:
...
```
在 Deployment 的 YAML 文件中添加如上注解,Istio 将自动注入 Sidecar,并配置好相应的 JWT 验证规则。
当 JWT 被 Envoy 代理接收到时,它会验证令牌的有效性,包括签名、过期时间和签发者。如果验证失败,Envoy 将阻止请求继续到后端服务,从而提供了额外的安全层。
此外,Istio 还支持自定义 JWT 验证逻辑,例如,可以使用 Istio 的 Mixer 组件来执行自定义的授权规则,或使用 Istio 的 Authorization Policy 控制谁可以访问服务。
在实际应用中,JWT 认证可以与 OAuth2 集成,允许用户通过登录获取 JWT,然后用此令牌访问受保护的 API。这种方式可以方便地实现单点登录(SSO)功能,并且易于管理和扩展。
Istio 的 JWT 认证是实现服务网格安全的重要一环,它可以帮助你构建一个更加安全、可控的微服务环境。通过定义认证策略、Sidecar 注入和自定义验证逻辑,你可以根据具体需求灵活地配置 JWT 认证机制。在实际操作中,要确保正确配置 JWT 签发者和验证密钥,以确保系统的安全性。
快,把我桶也提着
- 粉丝: 490
- 资源: 3
最新资源
- screenrecorder-20241221-204839.mp4
- Screenshot_20241221-204051.png
- 自考计算机网络原理04741真题及答案2018-2020
- YOLO算法-垃圾箱检测数据集-214张图像带标签-垃圾桶.zip
- Hive存储压缩与Hive3性能优化-必看文档
- YOLO算法-施工管理数据集-7164张图像带标签-安全帽-装载机-挖掘机-平地机-移动式起重机-反光背心-工人-推土机-滚筒-哑巴卡车.zip
- YOLO算法-俯视视角草原绵羊检测数据集-4133张图像带标签-羊.zip
- YOLO算法-挖掘机数据集-2656张图像带标签-自卸卡车-挖掘机-轮式装载机.zip
- YOLO算法-火车-轨道-手推车数据集-3793张图像带标签-火车-轨道-手推车.zip
- YOLO算法-垃圾数据集-6561张图像带标签-纸张-混合的-餐厅快餐.zip
- 技术报告:大型语言模型在压力下战略欺骗用户的行为研究
- YOLO算法-水泥路面裂纹检测数据集-5005张图像带标签-裂纹.zip
- YOLO算法-垃圾数据集-568张图像带标签-纸张-纸箱-瓶子.zip
- YOLO算法-施工设备数据集-2000张图像带标签-装载机-挖掘机-平地机-移动式起重机-推土机-滚筒-哑巴卡车.zip
- 防火墙系统项目源代码全套技术资料.zip
- 西门子V90效率倍增-伺服驱动功能库详解-循环通信库 DRIVELib.mp4