全部产品
云市场

访问控制插件

更新时间:2020-03-02 14:56:52

1. 概述

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

2.1. 配置说明

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

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

3. 相关错误码

错误代码 Http状态码 Message 描述
A403AC 403 Access Control Forbidden by ${RuleName} 授权控制插件阻止

4. 使用限制

  • 参数定义个数不超过16
  • 单个表达式的字符数不超过512个字符
  • 插件配置大小限制为16380字符的文本
  • 最大允许的rules条数为16条