You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WSO2 APIM中限制用户仅在沙箱环境执行API

在WSO2中实现沙箱/生产环境API权限隔离的方案

我之前刚好在WSO2 API Manager里配置过完全相同的需求,其实你注意到的那两个自动生成的角色就是核心解决点!下面给你一步步拆解具体操作:

1. 明确自动生成角色的作用

WSO2在创建应用时生成的Application/user_application_SANDBOX和Application/user_application_PRODUCTION角色,是绑定到具体应用的环境专属角色:

  • SANDBOX角色默认赋予应用访问对应API沙箱环境的权限
  • PRODUCTION角色则对应API生产环境的访问权限
    默认情况下,普通用户的应用只会被分配SANDBOX角色,不会自动获得PRODUCTION角色,这正好契合你的需求基础。

2. 给API配置环境级权限控制

进入API Publisher控制台,编辑你要发布的API,切换到「Permissions」标签页:

  • 针对沙箱环境:添加Application/user_application_SANDBOX角色,确保所有订阅该API的普通应用都能获取沙箱访问权限
  • 针对生产环境:只添加你自定义的专属角色(比如手动创建PRODUCTION_AUTHORIZED_CLIENTS角色),不要添加默认的PRODUCTION角色——这样只有你指定的客户才能获得生产环境的访问权限

3. 给特定客户的应用分配生产权限

对于达成协议的特定客户,你需要手动为他们的应用配置生产访问权限:

  1. 进入Carbon Console的「User Management」模块
  2. 找到目标客户的应用(格式为user_application,对应用户创建的应用名称)
  3. 给该应用添加你在第二步中创建的PRODUCTION_AUTHORIZED_CLIENTS角色,或者直接添加Application/user_application_PRODUCTION角色
  4. 保存后,该应用就能订阅并访问API的生产环境了

4. 验证权限隔离效果

完成配置后,你可以分别用普通用户和特定客户的应用测试:

  • 普通用户的应用只能看到API的沙箱订阅选项,尝试订阅生产环境会被权限拦截
  • 特定客户的应用可以正常订阅并调用生产环境的API

额外优化建议

如果需要更严格的访问控制,可以在网关层面添加自定义 mediation 序列:

  • 拦截所有API请求,检查请求的环境标识(比如请求头或URL中的environment参数)
  • 验证当前用户/应用的角色是否匹配对应环境的权限,不匹配则直接返回403错误

内容的提问来源于stack exchange,提问作者Sourcerer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:18:07