更新时间:2024-11-27 GMT+08:00

配置API的第三方认证

您可以通过第三方认证策略配置自己的鉴权服务为API的访问进行认证。API网关先调用用户的鉴权服务,收到鉴权服务的鉴权成功响应后再继续调用后端服务。

如果此策略在当前实例中不支持,请联系技术支持升级实例到最新版本。

策略参数会明文展示,为防止信息泄露,请谨慎配置。

第三方认证原理图如下,第三方认证策略绑定API后,您可以参考调用APIG开放的API调用。

前提条件

  • 一个API只能绑定一个相同类型的策略。
  • 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。
  • 策略的绑定、解绑、更新会实时生效,不需要重新发布API。
  • API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。
  • 如果策略与API有绑定关系,则策略无法执行删除操作。

创建第三方认证策略

  1. 进入API网关控制台页面。
  2. 根据实际业务在左侧导航栏上方选择实例。
  1. 在左侧导航栏选择“API管理 > API策略”。
  2. 在“策略管理”页面,单击“创建策略”。
  3. 在“选择策略类型”弹窗中,选择“插件策略 > 第三方认证”。
  4. 在“创建策略”弹窗中,配置策略信息。

    表1 第三方认证参数说明

    参数

    说明

    策略名称

    填写策略的名称,根据业务规划自定义。建议您按照一定的命名规则填写策略名称,方便您快速识别和查找。

    策略类型

    固定为“第三方认证”。

    描述

    填写策略的描述信息。

    策略内容

    策略的配置内容,支持表单配置和脚本配置两种方式。

    负载通道

    是否使用负载通道作为第三方接口的鉴权服务。

    • 选择“使用”时,配置鉴权服务的负载通道
    • 选择“不使用”时,配置鉴权服务的访问地址。

    后端URL

    • 请求方法

      支持GET、POST、PUT、HEAD请求方法。

    • 请求协议

      HTTP或HTTPS,传输重要或敏感数据时推荐使用HTTPS。

    • 负载通道(可选)

      仅在“使用”负载通道时,需要设置。选择已创建的负载通道名称,如果没有可选的负载通道,您也可以单击“新建负载通道”创建。

    • 后端服务地址(可选)

      仅在不使用负载通道时,需要设置

      填写鉴权服务的访问地址,格式:“主机:端口”。主机为鉴权服务的访问IP地址/域名,未指定端口时,HTTP协议默认使用80端口,HTTPS协议默认使用443端口。

      说明:

      目前仅支持IPv4地址。

    • 路径

      鉴权服务的路径,即服务的url。

    后端超时(ms)

    鉴权服务请求的超时时间。超时时间不超过后端响应超时时间上限,超时时间上限可在API网关控制台的“配置参数”中查看。

    自定义host头域

    仅在使用负载通道时配置

    在请求被发送到负载通道中的云服务器前,允许您自定义请求的host头域,默认将使用请求中原始的host头域。

    防暴力拦截阈值

    当源IP访问在5分钟内进行第三方认证失败的次数达到此处配置的阈值时,将触发源IP请求拦截,在这5分钟后解除请求拦截。

    例如,5分钟内,源IP访问在第三分钟进行第三方认证失败的次数达到此处配置的阈值,触发源IP请求拦截,再过2分钟解除请求拦截。

    身份来源

    将从API原始请求中获取此处配置的参数进行第三方鉴权接口鉴权(最大支持10个header参数和10个query参数)。身份来源信息为空时,携带API原始请求的请求参数(header参数和query参数)调用第三方鉴权接口进行鉴权。

    宽松模式

    开关开启后,当鉴权服务不可用(与鉴权服务建立连接失败或者鉴权服务返回5xx)时,API网关仍然接受客户端请求。

    允许携带原始请求体

    开关开启后,将携带API原始请求体调用鉴权接口鉴权。

    请求体大小(字节)

    仅在开启“允许携带原始请求体”时配置

    请求体大小不能超过实例允许的最大请求体大小。实例的最大请求体大小可在API网关控制台“配置参数”中查看。

    允许携带原始请求路径

    开关开启后,将API原始请求路径拼接到鉴权接口路径之后调用鉴权接口鉴权。

    直接返回鉴权响应

    开关开启后,鉴权失败时,将直接返回鉴权服务的响应。

    允许携带的响应头部

    鉴权成功时,原始请求将从鉴权服务返回的响应头中获取此处配置的头部,传到业务后端。

    最大支持配置10个头部。

    简易鉴权模式

    开关开启后,鉴权服务返回状态码“2xx”时,表示认证通过。

    鉴权结果匹配

    仅在“简易鉴权模式”关闭后可配置

    根据鉴权服务返回的响应头中的参数名和参数值进行校验,响应头中存在此处配置的参数名,并且参数值相等则认证通过。

    黑白名单配置

    开关开启后,原始API请求匹配黑/白名单规则将进行/不进行第三方认证鉴权。

    规则类型

    • 白名单规则

      如果原始API请求匹配白名单规则,将不进行第三方认证鉴权。

    • 黑名单规则

      如果原始API请求匹配黑名单规则,将进行第三方认证鉴权。

    定义参数

    定义用于规则的参数。

    说明:

    建议不要设置敏感信息,以防泄露。

    • 参数位置:用于规则匹配的参数位置。
      • path:API请求的URI,系统默认配置。
      • method:API请求方法,系统默认配置。
      • header:请求头的key值。
      • query:QueryString的key值。
      • system:系统参数。
    • 参数:用于判断与规则中的参数值是否匹配。

    定义规则

    定义用于规则的判断条件。

    单击“添加规则”,编辑规则名称和规则条件。在“条件表达式”弹窗中,选择“定义参数”中的参数名和判断条件,以及输入参数值。

    说明:

    建议不要设置敏感信息,以防泄露。

    • =为等于
    • !=为不等于
    • pattern为正则表达式
    • enum为枚举值,多个参数值之间用英文逗号分隔

  5. 单击“确定”。

    • 如果您需要复制已创建的策略,请在已创建策略的“操作”列中单击“克隆”配置参数即可。

      克隆策略的名称不能与已创建的策略名称重复。

    • 策略创建后,您还需要为策略绑定API,才能使策略对API生效。

脚本配置示例

{
  "auth_request": {
    "method": "GET",
    "protocol": "HTTPS",
    "url_domain": "192.168.10.10",
    "timeout": 5000,
    "path": "/",
    "vpc_channel_enabled": false,
    "vpc_channel_info": null
  },
  "custom_forbid_limit": 100,
  "carry_body": {
    "enabled": true,
    "max_body_size": 1000
  },
  "auth_downgrade_enabled": true,
  "carry_path_enabled": true,
  "return_resp_body_enabled": false,
  "carry_resp_headers": [],
  "simple_auth_mode_enabled": true,
  "match_auth": null,
  "rule_enabled": false,
  "rule_type": "allow"
}

为策略绑定API

  1. 单击策略名称,进入策略详情。
  2. 在API列表区域选择环境后,单击“绑定API”。
  3. 筛选API分组以及发布环境,勾选所需的API。

    支持通过API名称或标签筛选API,标签为创建API时定义的标签。

  4. 单击“确定”,绑定完成。

    • 如果单个API不需要绑定此策略,单击API所在行的“解绑”。
    • 如果批量API不需要绑定此策略,则勾选待解绑的API,单击列表上方“解绑”。最多同时解绑1000个API。