首页 API 网关 插件使用 参数访问控制插件

参数访问控制插件

1. 概述

访问控制插件可以根据请求参数或上下文,来执行条件判断,用于过滤不希望传递到后端的请求,参考参数与条件表达式的使用来了解如何定义参数和使用条件表达式。

2. 配置说明

在这个例子中假设我们的API请求Path为/{userId}/..., API使用JWT认证,JWT中有userId和userType两个claim, 我们这个插件的校验条件为:

  • 当userType=admin时,允许所有的路径。

  • 当userType=user时,仅允许/{userId}路径一致的请求。

---
#
# 在这个例子中假设我们的API请求Path为`/{userId}/...`,
# API使用JWT认证,JWT中有userId和userType两个claim
# 我们这个插件的校验条件为
# - 当userType=admin时,允许所有的路径,
# - 当userType=user时,仅允许/{userId}路径一致的请求
parameters:
  userId: "Token:userId"
  userType: "Token:userType"
  pathUserId: "path:userId"
#
# 关于Rules的处理规则,依次演算条件,按照返回值为`true`或者`false`,处理`ifTrue`的逻辑或`ifFalse`的结果
# `ALLOW`会直接判断为成功,而`DENY`则会直接返回错误代码给客户端,
# 如果没有触发`ALLOW`或`DENY`逻辑,则执行下一条
rules:
  - name: admin
    condition: "$userType = 'admin'"
    ifTrue: "ALLOW"
  - name: user
    condition: "$userId = $pathUserId"
    ifFalse: "DENY"
    statusCode: 403
    errorMessage: "Path not match ${userId} vs /${pathUserId}"
    responseHeaders:
      Content-Type: application/xml
    responseBody: 
      <Reason>Path not match ${userId} vs /${pathUserId}</Reason>

3. 相关错误码

错误代码

HTTP状态码

Message

描述

A403AC

403

Access Control Forbidden by ${RuleName}

被授权控制插件阻止。

4. 使用限制

  • 参数定义个数不超过160个。

  • 单个表达式的字符数不超过1024个字符。

  • 插件配置大小限制为50KB

  • 最大允许的rules条数为160条。

说明

当这个插件绑定至共享实例API时,参数定义及rules只有前16条生效,绑定至专享实例API时全部生效)

阿里云首页 API 网关 相关技术圈