应用服务网格

请求身份认证

2025-08-14 02:35:34

请求身份认证(RequestAuthentication)定义了终端用户请求网格服务时候的身份认证策略;如果认证信息非法,请求将被拦截;默认情况下,如果不带身份认证信息,请求将被放过,可以配置特定授权策略要求请求的身份信息不能为空来拦截身份认证信息为空的请求。

请求身份认证配置粒度

请求身份认证策略支持三种配置粒度,全局、命名空间和工作负载级;当策略的命名空间为系统命名空间时(默认为istio-system),策略为全局生效;当策略命名空间不是系统命名空间,且没有选择工作负载,策略将只在当前命名空间生效并覆盖全局策略;当策略在非系统命名空间,且选择了工作负载,则只对指定工作负载生效。

 

下面的配置中RequestAuthentication定义了foo命名空间下匹配app: httpbin标签的工作负载使用的jwt认证策略,同时AuthorizationPolicy定义了对请求来源的匹配,要求认证信息不能为空

apiVersion: security.istio.io/v1beta1

kind: RequestAuthentication

metadata:

  name: httpbin

  namespace: foo

spec:

  selector:

    matchLabels:

      app: httpbin

  jwtRules:

  - issuer: "issuer-foo"

    jwksUri: https://example.com/.well-known/jwks.json

---

apiVersion: security.istio.io/v1beta1

kind: AuthorizationPolicy

metadata:

  name: httpbin

  namespace: foo

spec:

  selector:

    matchLabels:

      app: httpbin

  rules:

  - from:

    - source:

        requestPrincipals: ["*"]

 

创建请求身份认证

1. 进入网格控制台,选择 网格安全中心 > 请求身份认证菜单

2. 选择命名空间,列表页会展示当前命名空间下的请求身份认证策略

3. 选择创建

 

修改请求身份认证

1. 进入网格控制台,选择 网格安全中心 > 请求身份认证菜单

2. 选择命名空间,列表页会展示当前命名空间下的请求身份认证策略,选择操作栏的编辑选项,修改策略,保存即可

 

 

删除请求身份认证

1. 进入网格控制台,选择 网格安全中心 > 请求身份认证菜单

2. 选择命名空间,列表页会展示当前命名空间下的请求身份认证策略,选择操作栏的删除选项,删除选定的策略即可

 

RequestAuthentication配置说明:

字段

类型

必选

说明

selector

WorkloadSelector

No

工作负载选择器,选择策略生效的工作负载

jwtRules

[]JWTRule

No

JWT配置列表,表示当前工作负载所支持的jwt配置(不支持一个请求带多个jwt认证信息的情况)

 

JWTRule

字段

类型

必选

说明

issuer

string

Yes

Jwt签发方

audiences

[]string

No

Jwt接收方列表,jwt中包含其中任意一个接收者都可以通过验证;

jwksUri

string

No

验证jwt签名的公钥URL,jwksUrijwks只能有一个生效

jwks

string

No

验证jwt签名的公钥jwksUrijwks只能有一个生效

fromHeaders

[]JWTHeader

No

提取Jwt信息的头部字段

fromParams

[]string

No

提取Jwt信息的query字段

outputPayloadToHeader

string

No

向后端透传payload的头部字段名称

forwardOriginalToken

bool

No

设置为true时,原始的jwt将被透传到后端

outputClaimToHeaders

[]ClaimToHeader

No

定义payload里面的字段透传到后端的头部信息


EB2Yivbq89VE