为华为云函数增加App认证
引言
昨天的博文(华为云云函数FunctionGraph实现随机产生一句土味情话-CSDN博客)介绍了使用APIG可以使用户访问华为的云函数。不过当时采用的是无认证方式,不过这种方式有安全风险,特别是FunctionGraph是按照调用次数收费的,如果让未授权用户随意调用,也会增加成本。今天介绍一下如何增加App认证。由于华为云的部分文档和实际操作有出入,所以在此记录一下。
设置App认证
进入FunctionGraph控制台,修改APIG的认证方式为App认证:
此时,如果再在浏览器中直接访问这个API的URL,就会得到如下错误信息:
{"error_msg":"Incorrect app authentication information: Authorization header is missing","error_code":"APIG.0303","request_id":"e7a16aaaf29e2b2204c4a3f3d2735105"}
如果选择支持简易认证,则认证时只需要AppCode,否则使用AppKey加AppSecret(有关原理参见:APP认证工作原理_API网关 APIG_华为云,华为给出了Java、C语言等各种语言的例子)。
创建App
在API网关的“调用API”部分可以找到“应用管理”,在其中创建应用,并绑定API。 点击应用的链接,可以进入详情页面:
其中可以找到AppKey(这个是可以公开的,在HTTP请求中传输)和AppSecet,这个是不能公开的,根据其计算签名。
如果是简易认证,则在AppCode部分添加自定义的AppCode。
这个AppCode是要在HTTP的报头中传输的,所以只有HTTPS协议下才允许这种方式。
调用验证
采用简易认证方式,发送请求时,增加请求头部参数“X-Apig-AppCode”,省略请求签名相关信息。
以Curl方式为例,增加头部参数名称:X-Apig-AppCode,参数值填生成的AppCode已生成的AppCode。
例如:
curl -X GET "https://xxxx.apig.cn-north-4.huaweicloudapis.com/love-words" -H "content-type: application/json" -H "X-Apig-AppCode: xxxxxxx"
结语
添加了App认证之后,可以避免未授权用户调用自己开发的云函数,提升了安全性。