tencent cloud

文档反馈

自定义认证

最后更新时间:2023-12-22 10:01:39

    操作场景

    如果 API 网关提供的认证鉴权方式不能满足您的需求,您可以使用自定义认证插件,通过您自定义的代码进行认证鉴权。
    自定义认证插件作用在请求过程中,客户端请求 API 网关后,API 网关会将请求内容转发到认证函数中。您可以将认证函数部署在云函数上,公网、或内网 VPC 上,认证通过后请求才会被转发给业务后端,否则将拒绝请求。
    
    
    

    前提条件

    对于部署在云函数的认证服务,需开通 云函数 服务。

    操作步骤

    步骤1:创建认证函数

    对于部署在公网或内网 VPC 的认证函数,可省略该步骤。
    1. 登录 云函数控制台
    2. 在左侧导航栏,单击函数服务,进入函数列表页。
    3. 单击页面左上角的新建,新建一个认证函数。

    步骤2:创建自定义认证插件

    1. 登录 API 网关控制台
    2. 在左侧导航栏,单击插件 > 自定义插件,进入自定义插件列表页。
    3. 单击页面左上角的新建,新建一个自定义认证插件。
    对于部署在云函数的认证服务,创建自定义认证插件时需要填写的数据如下:
    参数
    是否必填
    说明
    选择函数
    必填
    选择认证函数所在的命名空间、名称和版本。
    后端超时
    必填
    设置 API 网关转发到认证函数的后端超时时间,超时时间的最大限制为30分钟。在 API 网关调用认证函数,未在超时时间内获得响应时,API 网关将终止此次调用,并返回相应的错误信息。
    是否发送 Body
    必填
    当此选项的值为“是”时,会把客户端请求的 Header、Body、Query 都会发送给云函数。
    当此选项的值为“否”时,不会发送请求 Body。
    认证参数
    选填
    设置用于认证的请求参数,当“缓存时间”不为0时,必须设置此参数。使用缓存时,此参数将作为搜索条件来查询认证结果。
    缓存时间
    必填
    设置认证结果缓存的时间。值为0时代表不开启缓存,缓存时间最大支持3600秒。
    对于部署在公网的认证服务,创建自定义认证插件时需要填写的数据如下:
    参数
    是否必填
    说明
    请求方法
    必填
    请求自定义认证函数的方法,支持 GET、POST、PUT、DELETE、HEAD、ANY。
    公网服务
    必填
    自定义认证服务访问地址,支持 HTTP 和 HTTPS 协议。
    路径匹配模式
    必填
    支持后端路径匹配和全路径匹配两种方式。
    后端路径匹配:直接使用配置的路径请求服务。
    全路径匹配:使用去除请求路径的路径请求服务,例如 API 路径配置为 /a/,请求路径为 /a/b,开启全路径匹配后,传输给服务的为 /b。
    对于部署在内网 VPC 的认证服务,创建自定义认证插件时需要填写的数据如下:
    参数
    是否必填
    说明
    选择 VPC
    必填
    选择认证服务所属的 VPC。
    请求方法
    必填
    请求自定义认证函数的方法,支持 GET、POST、PUT、DELETE、HEAD、ANY。
    后端地址
    必填
    自定义认证服务访问地址,支持 HTTP 和 HTTPS 协议。

    步骤3:绑定 API

    1. 在列表中选中刚刚创建好的插件,单击操作列的绑定 API
    2. 在绑定 API 弹窗中选择服务和环境,并选择需要绑定插件的 API。
    3. 单击确定,即可将插件绑定到 API,此时插件的配置已经对 API 生效。

    pluginData

    {
    "cache_time":10, // 认证结果缓存时间,单位秒,合法值:0 ~ 3600 秒
    "endpoint_timeout":15, // 后端超时时间,单位秒,合法值:0 ~ 60 秒
    "func_name":"test_name", // 自定义函数名称
    "func_namespace":"test_namespace", // 自定义函数命名空间
    "func_qualifier":"$LATEST", // 自定义函数版本
    "is_send_body":true, // 是否将请求Body发送到函数
    "header_auth_parameters":[ // Header位置的认证参数,插件根据参数值来缓存认证结果
    "Header1"
    ],
    "query_auth_parameters":[ // Query位置的认证参数,插件根据参数值来缓存认证结果
    "Query1"
    ],
    "user_id":1253970226, // appid
    "version":"2021-12-26 17:17:49" // 插件版本,格式:yyyy-MM-dd HH:mm:ss,编辑插件时,传入新值会使得插件下的缓存结果失效
    }

    注意事项

    当用户开启缓存并配置了认证参数时,API 网关会进行参数校验。如果请求不传递该认证参数,API 网关将会报错“缺少 xxx 参数”。API 网关做参数校验和命中缓存时,都是大小写不敏感的。
    每次将自定义插件绑定到一个网关 API 时,相当于为认证函数创建了一个该网关 API 的触发器。在 SCF 侧删除触发器,相当于把插件和 API 解绑。
    自定义认证插件目前仅支持事件函数,不支持 Web 函数。
    自定义认证插件可与 API 网关提供的认证方式共存,API 网关提供的认证方式优先级高于自定义认证,建议您将自定义认证插件绑定的 API 网关 API 设置为“免认证”。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持