API网关 APIG-使用FunctionGraph服务实现APIG的自定义认证:编写自定义认证函数

时间:2025-02-12 15:04:35

编写自定义认证函数

函数工作流 的控制台编写函数,自定义认证的代码编写指南参见创建用于前端自定义认证的函数

根据下表参数说明,在函数工作流页面创建一个函数。

表1 函数信息配置

参数

配置说明

选择创建方式

默认“创建空白函数”。

函数类型

默认“事件函数”。

区域

与API网关相同区域。

项目

华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。此处默认为已选择的区域。

函数名称

根据规划自定义名称。

企业项目

企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。此处默认“default”。

委托名称

用户委托函数工作流去访问其他的云服务。此处选择“未使用任何委托”。

运行时

选择Python 3.6。

函数创建完成后,进入函数详情。在“代码”页签,将以下代码复制到index.py中(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型)。

 1 2 3 4 5 6 7 8 91011121314151617181920212223242526
# -*- coding:utf-8 -*-import jsondef handler(event, context):#以下表示认证信息匹配正确则返回用户名    if event["headers"]["authorization"]=='Basic dXN****cmQ=':        return {            'statusCode': 200,            'body': json.dumps({                "status":"allow",                "context":{                    "user_name":"user1"                }            })        }    else:        return {            'statusCode': 200,            'body': json.dumps({                "status":"deny",                "context":{                    "code": "1001",                      "message":"incorrect username or password",                    "authorizer_success": "false"                  }            })        }
support.huaweicloud.com/bestpractice-apig/apig-bp-200706001.html