更新时间:2024-07-11 GMT+08:00
分享

如何控制接口访问权限

什么是业务权限凭证

业务权限凭证用于控制接口的访问权限。AstroZero提供了两种方式对API接口访问权限的控制:配置自定义接口前置脚本和配置API接口的业务权限凭证。优先通过自定义接口前置脚本进行权限验证,根据脚本的返回值判断下一步的操作。

对于配置了业务权限凭证的接口,需要在权限的“业务权限凭证”页签中接入相应的业务权限凭证,才可调用API接口。若平台用户没有配置业务权限凭证,则继续校验Profile权限中的数据权限(例如执行服务编排、执行脚本、对象的增删改查、API读、API写权限)。若业务用户没有配置业务权限凭证,调用接口直接报错,不会继续校验Profile权限中的数据权限。

对于未配置了业务权限凭证的接口,则需要查看内置系统参数“bingo.permission.customapi.check”取值,该参数控制公共接口未绑定业务权限凭证时的逻辑。

  • 若该参数取值为“是”,公共接口未绑定业务权限凭证时,业务用户无法访问该接口;对于平台用户,则继续校验Profile权限中的数据权限。
  • 若该参数取值为“否”,公共接口未绑定业务权限凭证时,业务用户可直接访问该接口,无需鉴权;对于平台用户,则继续校验Profile权限中的数据权限。

例如:运行环境或者沙箱环境中,该内置参数配置为“是”,接口未绑定业务权限凭证,即使在权限设置中勾选“API读”与“API写”权限,业务用户也无法操作对象数据;若业务用户需要操作对象数据,请将该内置参数配置为“否”。

查看和配置该系统参数的方法为:在AstroZero经典版环境管理中心选择“系统管理 > 系统参数”,在“内置系统参数”页签查看和配置该参数。
图1 内置系统参数

如何配置业务权限凭证

  1. 参考登录经典应用设计器中操作,登录经典版应用设计器。
  2. 在页面左下方,单击“配置”

    图2 选择配置

  3. 在“业务权限凭证”页签,单击“新建”,新建业务权限凭证。

    图3 新建业务权限凭证

  4. 查看需要配置业务权限凭证的API接口,单击业务权限凭证的“编辑”,将相应的权限凭证添加到右侧选择框中,单击“保存”。

    图4 API接口绑定业务权限凭证

  5. 在经典版开发环境首页,单击“管理”,进入管理中心。

    图5 选择管理

  6. 在左侧导航栏中,选择“用户管理 > 权限配置”。

    在权限列表中查看需要配置业务权限凭证的权限详情,在“业务权限凭证”页签,将相应的业务权限凭证进行编辑,勾选“可接入”选项。
    图6 权限绑定业务权限凭证

  7. 选择“用户管理 > 用户”或“用户管理 > 业务用户”,对平台用户或业务用户配置相应的权限,该用户即可获取调用相应API接口的权限,否则将无法通过API接口的业务权限凭证校验。

    AstroZero对用户和业务用户在业务权限凭证校验的处理有所不同。平台用户在业务权限凭证校验失败后会进行下一步的权限校验,如果后续校验通过仍可以调通API接口,业务用户则在业务权限凭证校验失败时直接报错,终止操作。

如何通过脚本控制接口访问权限

  1. AstroZero提供了示例自定义接口前置脚本,可以仿造示例代码进行脚本的编写。

    图7 创建示例自定义接口前置脚本
    您可以在自定义接口前置脚本中进行自定义的权限校验,并根据校验结果返回相应的result值。
    export class Output {
        @action.param({ type: "Number"})
        result: decimal.Decimal;
    }
     
    const PASS     = decimal.newWithExponent(1, 0);
    const BANNED   = decimal.newWithExponent(0, 0);
    const FALLBACK = decimal.newWithExponent(-1, 0);
    自定义接口前置脚本输出参数result含义如下:
    • PASS--{"result":1}:校验通过,直接放行。
    • BANNED--{"result":0}:校验不通过,无法调用。
    • FALLBACK--{"result":-1}:校验通过,但还需要进行后续权限校验。

    开发自定义接口前置脚本时,出参可按照示例自定义接口前置脚本代码中的表达式也可自行定义,但必须确保出参为“-1”“0”“1”中的某一值,否则作为校验不通过处理。

  2. 单击左下角的“服务”,在服务管理页面,单击“编辑”,将校验方式改为“与脚本绑定”,在“前置处理”中选择相应的自定义接口前置脚本。

    • 前置处理:一般是授权处理脚本,在访问自定义接口前,需要进行授权处理。
    • 后置处理:一般是敏感错误信息或者统计日志处理脚本,后置脚本没有返回参数,无论执行成功或失败都不影响自定义接口的请求处理流程。
    图8 自定义访问控制
    图9 绑定自定义接口前置脚本

相关文档