
# JWTAuthContent
表1JWTAuthContent 
| 参数                                   | 是否必选 | 参数类型                                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| jwks_service                         | 否    | [PluginJWTAuthJWKSService] object                 | JWKS服务地址。jwks和jwks_service参数必须填写其中一个，且只有一个参数会生效；若jwks和jwks_service都填写时，网关会使用jwks_service。当jwks_service不为空时，网关会从指定服务地址中定时获取JWKS公钥。                                                                                                                                                                                                                                                                                                              |
| jwks                                 | 否    | String                                                                                        | JWKS公钥。jwks和jwks_service参数必须填写其中一个，且只有一个参数会生效。若jwks和jwks_service都填写时，网关会使用jwks_service。该参数需要填写验证token的JWKS公钥，需为遵循RFC规范（<https://www.rfc-editor.org/rfc/rfc7517>）的json字符串。最大支持50KB。                                                                                                                                                                                                                                                             |
| token_location                       | 否    | String                                                                                        | 允许token设置的位置： - header：请求HEADER参数  - query：请求QUERY参数  - cookie：请求COOKIE参数   默认值为 header。 |
| token_name                           | 否    | String                                                                                        | 设置指定名称的参数作为token。当token位置为header时默认值为 Authorization；当token位置为query时默认值为 access_token；当token位置为cookie时该参数必填。当token位置为header时该参数不区分大小写。                                                                                                                                                                                                                                                                                                          |
| token_prefix                         | 否    | String                                                                                        | 当token位置设置为header可以设置该参数。token字符串将去除该前缀，再用于鉴权。默认值为 Bearer。                                                                                                                                                                                                                                                                                                                                                                                     |
| token_expiration_tolerance           | 否    | String                                                                                        | 校验token过期允许的时钟偏移量。若token在payload中设置了过期时间（exp），网关会对其进行校验，允许您自定义校验token是否过期的时钟偏移量(0-86400秒)。单位为秒，默认值为0。                                                                                                                                                                                                                                                                                                                                          |
| token_pass_through_enabled           | 否    | Boolean                                                                                       | 是否允许网关将原始token透传至后端。默认值为false。                                                                                                                                                                                                                                                                                                                                                                                                                 |
| carry_payload                        | 否    | [PluginJWTAuthCarryPayload] object              | 网关将原始payload设置到指定名称的请求头中，传递至后端。                                                                                                                                                                                                                                                                                                                                                                                                                |
| missing_token_skip_auth_enabled      | 否    | Boolean                                                                                       | 当请求未携带token时，是否允许跳过JWT认证直接访问后端。默认值为false。                                                                                                                                                                                                                                                                                                                                                                                                      |
| ignore_expiration_validation_enabled | 否    | Boolean                                                                                       | 是否允许网关忽略对token的超期时间（exp）字段值的校验。默认值为false。                                                                                                                                                                                                                                                                                                                                                                                                      |
| claims_to_headers                    | 否    | Array of [PluginJWTAuthClaimsToHeaders] objects | 网关将payload中指定字段（claim）的值，设置到指定名称的请求头中，传递至后端。                                                                                                                                                                                                                                                                                                                                                                                                   |
| blacklist                            | 否    | Array of [PluginJWTAuthBlacklist] objects      | 黑名单配置。网关将根据黑名单配置，对payload中指定字段（claim）的值执行黑名单校验。如果payload中claim对应键值对匹配了黑名单配置中任意一条规则，则会拒绝该请求。                                                                                                                                                                                                                                                                                                                                                    |
   
 表2PluginJWTAuthJWKSService 
| 参数          | 是否必选 | 参数类型    | 描述                                                                                                                                                           |
|:---|:---|:---|:---|
| uri         | 是    | String  | 响应返回JWKS公钥的URI地址，公钥需为遵循RFC规范（<https://www.rfc-editor.org/rfc/rfc7517>）的json字符串。网关请求URI地址的方法为GET，如果未指定请求协议，则使用HTTPS。返回的JWKS大小最大支持50KB。该参数当jwks_service不为空时必选。 |
| timeout     | 否    | Integer | 网关请求JWKS服务的超时时间(1-60000ms)。单位为毫秒，默认值为5000。                                                                                                                   |
| ttl         | 否    | Integer | 网关将JWKS服务返回的JWKS缓存的时间(600-86400秒)。单位为秒，默认值为7200。                                                                                                             |
| custom_host | 否    | String  | 请求JWKS服务的Host头域，默认将使用请求中原始的Host头域。                                                                                                                           |
   
 表3PluginJWTAuthCarryPayload 
| 参数          | 是否必选 | 参数类型    | 描述                                                          |
|:---|:---|:---|:---|
| enabled     | 否    | Boolean | 是否允许将token解析出的payload传递至后端。默认值为false。                       |
| header_name | 否    | String  | 将token解析出的payload写入到指定名称的请求头。该参数当enabled为true时必选。该参数不区分大小写。 |
   
 表4PluginJWTAuthClaimsToHeaders 
| 参数          | 是否必选 | 参数类型    | 描述                                                                  |
|:---|:---|:---|:---|
| claim       | 是    | String  | payload中的指定字段名，只支持指定json结构体中最外层的字段。                                 |
| header      | 是    | String  | 传递至后端的请求头名称。                                                        |
| is_override | 否    | Boolean | 同名头是否重写。当该值为true时，如果存在同名的请求头会将其值覆盖；当该值为false时，会额外追加同名的请求头。默认值为true。 |
   
 表5PluginJWTAuthBlacklist 
| 参数    | 是否必选 | 参数类型   | 描述                                  |
|:---|:---|:---|:---|
| claim | 是    | String | payload中的指定字段名，只支持指定json结构体中最外层的字段。 |
| value | 是    | String | 如果claim的值等于该字段值，则会拒绝请求。             |
   
