跳到主要内容
版本:3.4.x

基于黑白名单的访问控制

有时候,你需要比身份验证插件提供的更精确的访问控制。例如,你可能希望保留可以访问 API 的消费者白名单。现在,消费者必须发送经过身份验证的请求,并且在白名单上(而且不在黑名单上)才能访问 API。

备注

在实施基于消费者的访问控制之前,请考虑 API 门户 是否是更好的解决方案。

本教程将指导你通过 Consumer Restriction 插件创建消费者白名单来配置精确的访问控制。

前提条件

  1. 安装 API7 企业版
  2. 在网关组上有一个运行的 API
  3. 已有一个启用了身份验证的消费者

通过消费者名称限制访问

当消费者发出经过身份验证的请求时,API7 网关会将消费者的名称传递给路由。因此,路由不需要直接访问消费者的凭据,这对用户更加友好。

  1. 从侧边栏选择网关组的 已发布服务,然后选择要配置的服务,例如,版本为 1.0.0httpbin API
  2. 从侧边栏选择 插件
  3. 搜索 consumer-restriction 插件。
  4. 点击 加号图标 (+)。
  5. 在对话框中,执行以下操作:
  • 如果你已按照前提条件教程操作,那么你应该已经拥有一个启用了 key-auth 插件的消费者 Alice。将以下配置添加到JSON 编辑器

    {
    "whitelist": [
    "Alice"
    ]
    }
  • 点击 启用
  1. 用同样的方法添加一个新的消费者 Lisa 并使用以下配置启用 key-auth 插件。

    {
    "key": "secret-key2"
    }

验证

以消费者 Alice 的身份向服务发起请求:

curl -i "http://127.0.0.1:9080/ip" -H "apikey: secret-key" 

你将看到请求成功,并收到 200 OK 响应,因为消费者 Alice 在白名单中。

现在,以新创建的消费者 Lisa 的身份向服务发起请求:

curl -i "http://127.0.0.1:9080/ip" -H "apikey: secret-key2" 

你将收到 403 Forbidden 响应,并附带以下请求正文,因为消费者 Lisa 未添加到白名单中:

{"message":"The consumer_name is forbidden."}

相关阅读