jwt-validate

在允许访问 API 之前,请使用 验证 JWT 安全策略来启用对请求中的 JSON Web 令牌 (JWT) 的验证。

网关支持

表 1. 显示哪些网关支持此策略以及对应策略版本的表格
网关 策略版本
DataPower® Gateway (v5 compatible) 1.0.0
DataPower API Gateway 2.0.0

本主题介绍了如何在 OpenAPI 源中配置策略;有关如何在Assembly用户界面中配置策略的详细信息,请参阅 “验证JWT ”。

注:
  • 如果原始消息是使用“共享秘钥”签名的,那么指定的加密对象也必须为“共享秘钥”。
  • 如果原始消息是使用“专用密钥”签名的,那么指定的加密对象必须为“加密证书(公用证书)”。
  • 加密资料可通过 JSON Web 密钥 (JWK) 提供。
  • 如果在 JWT 头中包含 JWK 头参数,那么此参数必须匹配策略中指定的 JWK 或加密对象,否则 JWT 验证将失败。
  • 如果同时指定了加密对象和 JWK,那么加密对象用于解密或验证 JWT。
  • DataPower API Gateway 上的 JWT 验证操作可以使用单个 JWK 或 JWK 集来验证 JWT。

关于

jwt-validate 策略具有以下结构:
- jwt-validate:
  version: version
  title: title
  description: description
  jwt: json_web_token
  output-claims: output_full_set_of_jwt_claims
  iss-claim: issuer_claim
  aud-claim: audience_claim
  jwe-crypto: decrypt_crypto_object
  jwe-jwk: decrypt_crypto_jwk_variable_name
  jws-crypto: verify_crypto_object
  jws-jwk: verify_crypto_jwk_variable_name

属性

下表描述了该策略的属性:
表 2. 验证 JWT 策略属性
属性 必需 描述 数据类型
version 策略版本号 字符串
title 策略的标题。 字符串
description False 对策略的描述。 字符串
jwt 包含要验证的 JWT 的上下文或运行时变量。

缺省值为:request.headers.authorization。 但如果未设置此属性,那么缺省情况下,此策略会查找 request.headers.authorization 位置中的 JWT。

注: 授权头的格式必须为:
"Authorization: Bearer jwt-token"
其中 jwt-token 是已编码的 JWT。
字符串
output-claims JWT 中包含的完整声明集分配到的运行时变量。

缺省值为:decoded.claims

字符串
iss-claim False 用于验证签发者 (iss) 声明的 Perl Compatible Regular Expressions (PCRE) 。 字符串
aud-claim False 要用于验证受众 (aud) 声明的 PCRE。 字符串
jwe-crypto False 要用于对声明进行解码的加密对象(共享密钥或证书)。 JWK 和加密对象都是提供解密 JWT 所需加密数据的有效途径。 但如果同时指定这两种数据类型,那么仅使用加密对象。 字符串
jwe-jwk False 运行时变量,包含用于解密 JWT 的 JWK。 JWK 和加密对象都是提供解密 JWT 所需加密数据的有效途径。 但如果同时指定这两种数据类型,那么仅使用加密对象。 字符串
jws-crypto False 要用于验证签名的加密对象(共享密钥或证书)。 JWK 或 JWK 集合以及加密对象都是提供验证 JWT 所需的加密数据的有效方法。 但如果同时指定这两种数据类型,那么仅使用加密对象。 字符串
jws-jwk False 包含用于验证签名的 JWK 或 JWK 集的运行时变量。 JWK 或 JWK 集合以及加密对象都是提供验证 JWT 所需的加密数据的有效方法。 但如果同时指定这两种数据类型,那么仅使用加密对象。 字符串

示例

以下是 jwt-validate 策略的示例:
- jwt-validate:
    version: 1.0.0
    title: jwt-validate
    jwt: request.headers.authorization
    output-claims: decoded.claims
    iss-claim: "'^data.*'"
    aud-claim: "'^id.*'"
    jwe-crypto: jweCryptoObjectName
    jwe-jwk: jwe.jwk
    jws-crypto: jwsCryptoObjectName
    jws-jwk: jws.jwk

有关如何使用 jwt-validate 安全策略的更多信息,请参阅内置策略部分中的 验证 JWT