云服务器内容精选
-
请求参数代码定义示例 在FunctionGraph中开发函数,以python2.7语言为例,函数代码需要满足如下条件。 函数有明确的接口定义,如下所示: def handler (event, context) 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。 执行事件(event): 函数执行界面由用户输入的执行事件参数, 格式为JSON对象。 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。 执行事件(event)支持三种请求参数定义,格式为: Header中的请求参数:event["headers"]["参数名"] Query中的请求参数:event["queryStringParameters"]["参数名"] 您自定义的用户数据:event["user_data"] 函数代码获取的三种请求参数与API网关自定义认证中的参数关系如下所示: Header中的请求参数:对应自定义认证中参数位置为Header的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 Query中的请求参数:对应自定义认证中参数位置为Query的身份来源,其参数值在您调用使用该前端自定义认证的API时传入 您自定义的用户数据:对应自定义认证中的用户数据,其参数值在您创建自定义认证时输入 函数的返回值不能大于1M,必须满足如下格式: { "statusCode":200, "body": "{\"status\": \"allow\", \"context\": {\"user\": \"abc\"}}" } 其中,body字段的内容为字符串格式,json解码之后为: { "status": "allow/deny", "context": { "user": "abc" } } “status”字段为必选,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。 “context”字段为可选,只支持字符串类型键值对,键值不支持JSON对象或数组。 context中的数据为您自定义的字段,认证通过后作为认证参数映射到API网关后端参数中,其中context中的参数名称与系统参数名称必须完全一致,且区分大小写,context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1 ~ 32个字符。 Header中的请求参数定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event["headers"].get("auth")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"success" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp) Query中的请求参数定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event["queryStringParameters"].get("test")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"abcd" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp) 用户数据定义代码示例: # -*- coding:utf-8 -*- import json def handler(event, context): if event.get("user_data")=='abc': resp = { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user":"abcd" } }) } else: resp = { 'statusCode': 200, 'body': json.dumps({ "status":"deny", }) } return json.dumps(resp)
-
操作场景 自定义认证包含两种认证:前端自定义认证和后端自定义认证。 前端自定义认证:如果您希望使用自己的认证系统,而不是APP认证/华为IAM认证对API的访问进行认证鉴权时,您可以使用自定义认证,通过您自定义的函数进行认证鉴权。 后端自定义认证:当不同的后端服务使用不同的认证系统时,导致您需要为不同的认证系统定制化开发API,而APIG通过自定义认证功能,将多种认证系统集成,简化API开发的复杂度。您只需要在APIG中创建自定义的函数认证,APIG通过此函数对接后端认证系统,获取后端服务的访问授权。 自定义认证依赖函数工作流服务。如果当前Region没有上线函数工作流服务,则不支持使用自定义认证。 自定义认证的具体使用指导,可参考《API网关开发指南》的自定义认证相关章节。 使用自定义认证调用API的流程如下图所示: 图1 通过自定义认证调用API
-
解决方案 登录FunctionGraph控制台,创建函数,并将其定义为自定义认证函数。 登录FunctionGraph控制台,创建一个业务函数。 在APIG中创建一个API分组,用来存放API。 创建一个鉴权方式为自定义认证且后端为FunctionGraph的API。 调试API。 完成本教程后,您的公有云账户将存在以下资源: 一个API分组(存放API)。 一个自定义认证函数。 一个业务函数。 一个鉴权方式为自定义认证且后端为FunctionGraph的API。
-
请求示例 更新一个前端自定义认证 { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "FUNC", "authorizer_uri" : "urn:fss:xx-xxx:106506b9a92342df9a5025fc12351cfc:function:defau:apigDemo_1592617458814", "network_type" : "V1", "authorizer_version" : "v1", "authorizer_alias_uri" : "urn:fss:xx-xxx-4:106506b9a92342df9a5025fc12351cfc:function:defau:apigDemo_1592617458814:!v1", "user_data" : "authorizer_test", "identities" : [ { "name" : "header", "location" : "HEADER" } ] }
-
响应示例 状态码: 200 OK { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "FUNC", "authorizer_uri" : "urn:fss:xx-xxx-4:106506b9a92342df9a5025fc12351cfc:function:defau:apigDemo_1592617458814", "network_type" : "V1", "authorizer_version" : "v1", "authorizer_alias_uri" : "urn:fss:xx-xxx-4:106506b9a92342df9a5025fc12351cfc:function:defau:apigDemo_1592617458814:!v1", "identities" : [ { "name" : "header", "location" : "HEADER" } ], "ttl" : 5, "user_data" : "authorizer_test", "id" : "0d982c1ac3da493dae47627b6439fc5c", "create_time" : "2020-07-08T03:27:52.000+0000" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3081", "error_msg" : "authorizer with id: 0d982c1ac3da493dae47627b6439fc5c not found" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 自定义认证的名称。 长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、“_”组成,且只能以英文或中文开头。 type 是 String 自定义认证类型 FRONTEND:前端 BACKEND:后端 不支持修改 枚举值: FRONTEND BACKEND authorizer_type 是 String 只能为:FUNC 枚举值: FUNC authorizer_uri 是 String 函数地址。 network_type 否 String 对接函数的网络架构类型 V1:非VPC网络架构 V2:VPC网络架构 缺省值:V1 枚举值: V1 V2 authorizer_version 否 String 函数版本。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN 最大长度:64 authorizer_alias_uri 否 String 函数别名地址。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN identities 否 Array of Identity objects 认证来源 ttl 否 Integer 缓存时间 user_data 否 String 用户数据 ld_api_id 否 String 自定义后端服务ID。 暂不支持 need_body 否 Boolean 是否发送body 表4 Identity 参数 是否必选 参数类型 描述 name 是 String 参数名称 location 是 String 参数位置 枚举值: HEADER QUERY validation 否 String 参数校验表达式,默认为null,不做校验
-
URI PUT /v2/{project_id}/apigw/instances/{instance_id}/authorizers/{authorizer_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 authorizer_id 是 String 自定义认证的编号
-
响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 name String 自定义认证的名称。 长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、“_”组成,且只能以英文或中文开头。 type String 自定义认证类型 FRONTEND:前端 BACKEND:后端 不支持修改 枚举值: FRONTEND BACKEND authorizer_type String 只能为:FUNC 枚举值: FUNC authorizer_uri String 函数地址。 network_type String 对接函数的网络架构类型 V1:非VPC网络架构 V2:VPC网络架构 缺省值:V1 枚举值: V1 V2 authorizer_version String 函数版本。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN 最大长度:64 authorizer_alias_uri String 函数别名地址。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN identities Array of Identity objects 认证来源 ttl Integer 缓存时间 user_data String 用户数据 ld_api_id String 自定义后端服务ID。 暂不支持 need_body Boolean 是否发送body id String 自定义认证编号 create_time String 创建时间 roma_app_id String 自定义认证所属应用编号 暂不支持 roma_app_name String 自定义认证所属应用名称 暂不支持 表6 Identity 参数 参数类型 描述 name String 参数名称 location String 参数位置 枚举值: HEADER QUERY validation String 参数校验表达式,默认为null,不做校验 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
-
请求示例 修改指定的自定义认证,修改认证来源参数 { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "LD", "ld_api_id" : "6f8e61317e4e4fbf8e8220cc19fcced9", "authorizer_uri" : "/test", "network_type" : "", "authorizer_version" : "", "authorizer_alias_uri" : "", "identities" : [ { "name" : "header", "location" : "HEADER" } ], "ttl" : 5 }
-
响应示例 状态码: 200 OK { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "LD", "authorizer_uri" : "/test", "network_type" : "", "authorizer_version" : "", "authorizer_alias_uri" : "", "identities" : [ { "name" : "header", "location" : "HEADER" } ], "ttl" : 5, "need_body" : true, "id" : "0d982c1ac3da493dae47627b6439fc5c", "create_time" : "2020-09-23T02:32:10Z", "roma_app_id" : "98df09fb-d459-4cbf-83a7-2b55ca6f3d5d", "roma_app_name" : "app-demo" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3081", "error_msg" : "authorizer with id: 0d982c1ac3da493dae47627b6439fc5c not found" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 自定义认证的名称。 长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、“_”组成,且只能以英文或中文开头。 type 是 String 自定义认证类型 FRONTEND:前端 BACKEND:后端 authorizer_type 是 String 自定义认证函数类型: LD:自定义后端函数 FUNC:函数服务函数 authorizer_uri 是 String 函数地址。 注意:使用自定义后端的函数API,API请求方法必须为POST,且API状态必须为已部署。 network_type 否 String 对接函数的网络架构类型 V1:非VPC网络架构 V2:VPC网络架构 注意:该字段在APIC场景下不生效 缺省值:V1 authorizer_version 否 String 函数版本。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN 最大长度:64 authorizer_alias_uri 否 String 函数别名地址。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN identities 否 Array of Identity objects 认证来源 ttl 否 Integer 缓存时间 user_data 否 String 用户数据 ld_api_id 否 String 自定义后端服务ID。 自定义认证函数类型为LD时必填 need_body 否 Boolean 是否发送body 表4 Identity 参数 是否必选 参数类型 描述 name 是 String 参数名称。 支持数字,英文,下划线,中划线,点,且只能以数字或英文开头。 最小长度:0 最大长度:32 location 是 String 参数位置 validation 否 String 参数校验表达式,默认为null,不做校验 最大长度:1024
-
响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 name String 自定义认证的名称。 长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、“_”组成,且只能以英文或中文开头。 type String 自定义认证类型 FRONTEND:前端 BACKEND:后端 authorizer_type String 自定义认证函数类型: LD:自定义后端函数 FUNC:函数服务函数 authorizer_uri String 函数地址。 注意:使用自定义后端的函数API,API请求方法必须为POST,且API状态必须为已部署。 network_type String 对接函数的网络架构类型 V1:非VPC网络架构 V2:VPC网络架构 注意:该字段在APIC场景下不生效 缺省值:V1 authorizer_version String 函数版本。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN 最大长度:64 authorizer_alias_uri String 函数别名地址。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN identities Array of Identity objects 认证来源 ttl Integer 缓存时间 user_data String 用户数据 ld_api_id String 自定义后端服务ID。 自定义认证函数类型为LD时必填 need_body Boolean 是否发送body id String 自定义认证编号 create_time String 创建时间 roma_app_id String 自定义认证所属应用编号 roma_app_name String 自定义认证所属应用名称 表6 Identity 参数 参数类型 描述 name String 参数名称。 支持数字,英文,下划线,中划线,点,且只能以数字或英文开头。 最小长度:0 最大长度:32 location String 参数位置 validation String 参数校验表达式,默认为null,不做校验 最大长度:1024 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
-
响应示例 状态码: 201 Created { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "LD", "authorizer_uri" : "/test", "network_type" : "", "authorizer_version" : "", "authorizer_alias_uri" : "", "identities" : [ { "name" : "header", "location" : "HEADER" } ], "ttl" : 5, "id" : "0d982c1ac3da493dae47627b6439fc5c", "create_time" : "2020-09-23T02:32:10.354159293Z", "need_body" : true } 状态码: 400 Bad Request { "error_code" : "APIG.2011", "error_msg" : "Invalid parameter value,parameterName:type. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3019", "error_msg" : "The function URN does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
-
请求示例 创建一个自定义认证,认证类型为前端认证,函数类型为自定义后端函数,认证来源使用Header参数 { "name" : "Authorizer_demo", "type" : "FRONTEND", "authorizer_type" : "LD", "ld_api_id" : "6f8e61317e4e4fbf8e8220cc19fcced9", "authorizer_uri" : "/test", "network_type" : "", "authorizer_version" : "", "authorizer_alias_uri" : "", "identities" : [ { "name" : "header", "location" : "HEADER" } ], "ttl" : 5 }
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 自定义认证的名称。 长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、“_”组成,且只能以英文或中文开头。 type 是 String 自定义认证类型 FRONTEND:前端 BACKEND:后端 authorizer_type 是 String 自定义认证函数类型: LD:自定义后端函数 FUNC:函数服务函数 authorizer_uri 是 String 函数地址。 注意:使用自定义后端的函数API,API请求方法必须为POST,且API状态必须为已部署。 network_type 否 String 对接函数的网络架构类型 V1:非VPC网络架构 V2:VPC网络架构 注意:该字段在APIC场景下不生效 缺省值:V1 authorizer_version 否 String 函数版本。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN 最大长度:64 authorizer_alias_uri 否 String 函数别名地址。 当函数别名URN和函数版本同时传入时,函数版本将被忽略,只会使用函数别名URN identities 否 Array of Identity objects 认证来源 ttl 否 Integer 缓存时间 user_data 否 String 用户数据 ld_api_id 否 String 自定义后端服务ID。 自定义认证函数类型为LD时必填 need_body 否 Boolean 是否发送body 表4 Identity 参数 是否必选 参数类型 描述 name 是 String 参数名称。 支持数字,英文,下划线,中划线,点,且只能以数字或英文开头。 最小长度:0 最大长度:32 location 是 String 参数位置 validation 否 String 参数校验表达式,默认为null,不做校验 最大长度:1024
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格