通过添加自定义令牌JWT(JSON Web Token)并绑定待验证的API即可创建API令牌合规验证规则,ESA将针对传入的请求进行令牌合规验证并进行处理,保障您的业务API安全。
配置API令牌规则
在ESA控制台选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择。
在API 安全页面,选择API 规则页签,单击令牌配置。

在设置页面,单击添加,添加令牌信息。

按业务需求完成令牌参数填写后,单击确定即可。
配置名称:输入您自定义的令牌名称,如
JWT-Demo。令牌位置:选择令牌在请求中的位置,可选择标头和Cookie两种字段,并输入对应的键值。
说明为适配不同业务中JWT的所在位置,通过单击Or可以创建逻辑
或条件,可同时判断最多4个令牌位置。令牌密钥:通过手动输入或上传JSON文件来添加令牌密钥,密钥要求可参考令牌说明。
说明若配置多个密钥,则会根据
kid字段选取密钥进行校验,若有一份密钥校验通过则通过。

完成令牌配置后即可进行API规则创建。返回API 规则页签,单击新增规则按钮。

根据业务需求进行令牌校验相关参数配置即可。
规则名称:自定义规则名称,如
rule-jwt-demo。验证 API:单击下拉选择需要进行令牌合规校验的主机记录,选择后ESA将自动为您展示所选主机记录下的API列表,检查并勾选所需的API即可。
选择令牌配置:勾选一个或多个需要校验的令牌。当勾选多个令牌时可选择:
至少校验一个配置:请求需要符合多个令牌配置中的一个即可,否则将被判定为不合规请求。
验证所有配置:请求需要同时符合所有令牌配置,否则将被判定为不合规请求。
说明当API请求中缺少令牌时,默认会将请求标记为不合规,若有特殊需要可在对应令牌右侧的缺少令牌时列下拉选择忽略。
执行操作:选择对不符合令牌校验的请求的操作:

防护效果
完成API规则创建后,您可以在左侧导航栏选择,在事件分析页面通过筛选器选择防护规则为API 规则,下滑即可在采样日志栏中查看详细的防护日志。
令牌说明
当前令牌校验仅用于JWT验证。
字段说明
公钥格式仅支持JWK,且JWT公钥必须含有kid和alg字段。字段含义可参考:
kty:密钥类型,如EC-椭圆曲线密钥、RSA-RSA密钥。use:公钥用途,如sig- 用于数字签名。crv:椭圆曲线类型,仅适用于椭圆曲线(EC)密钥,如P-256- NIST标准化的P-256椭圆曲线。kid:自定义的密钥标识符,如esa。JWK必须带有kid字段,用于密钥的选择;同样的,请求的JWT的声明中也必须带有kid字段。使用该字段可用于令牌密钥的轮换。x:使用椭圆曲线密钥时,椭圆曲线公钥的x坐标。y:使用椭圆曲线密钥时,椭圆曲线公钥的y坐标。alg:算法标识,当前支持:RS256- RSA with SHA-256签名算法。n:RSA密钥的模数(modulus),仅适用于RSA密钥。e:RSA密钥的公共指数(public exponent),仅适用于RSA密钥。
示例
以下为RSA密钥的JWK示例。使用RSA密钥时,crv、x、y字段应为空串。
{
"kty": "RSA",
"kid": "test-rsa-key",
"alg": "RS256",
"use": "sig",
"n": "wR8LJDq2pM1uPD5KfmMaasmV20nwgVYnDlsxRjmryLStQeqW-3fe-ELV1tlYHq2-hl8HNNxz5eud8olmqxtrgpihPN9c_pbLY-Jc04_tdpWs10ms1vgoz0S11JEVCK6q9EJ_QCTAxO6GBCdI9t0oUTpBz6QuQCIJAOQdW2k7gZr8CmCn_ianTU1nTxBzAoBxO_r32kl7lx9RTFCZHBJsm8twJ7o0ZXpUjbjhOY2LgdDx3t09YDDOMDYzEOZ86NVzm8qXSekBJFf5-FGNe0Lkht1lsMlBnqlfmWz8q5zUkPZ6XslpgyVqqSaw4DGxXV8aGWRFcOB0Ac2bush6McBAhQ",
"e": "AQAB",
"crv": "",
"x": "",
"y": ""
}