云服务器内容精选

  • 设置错误响应 调用API如果输入错误的认证信息,则返回结果如下: 1 {"error_msg":"Incorrect authentication information: frontend authorizer","error_code":"APIG.0305","request_id":"36e42b3019077c2b720b6fc847733ce9"} 为了让API响应结果为函数中返回的context中的字段(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型),需要修改网关响应模板。在API所在分组中,“分组信息”页签下的“网关响应”区域,编辑自定义认证失败的响应详情,将响应状态码改为401,将消息模板改为(引用变量为boolean类型或number类型时,变量不需要加双引号): 1 {"code":"$context.authorizer.frontend.code","message":"$context.authorizer.frontend.message", "authorizer_success": "$context.authorizer.frontend.authorizer_success"} 修改之后,调用API传入错误的认证信息,返回状态码为401,返回结果如下: 1 {"code":"1001","message":"incorrect username or password","authorizer_success": "false"}
  • 编写自定义认证函数 在 函数工作流 的控制台编写函数,自定义认证的代码编写指南参见创建用于前端自定义认证的函数。 根据下表参数说明,在函数工作流页面创建一个函数。 表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 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding:utf-8 -*- import json def 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" } }) }
  • 操作流程 编写自定义认证函数 创建一个函数作为用户自己的认证服务。 创建自定义认证 在APIG中创建一个自定义认证,将函数服务接入APIG。 创建自定义认证的API 创建一个自定义认证方式的API。 设置错误响应 为了让API响应结果为函数中返回的context中的字段,需要修改网关响应。 映射后端参数 添加系统参数,将函数返回的context信息传到后端。 验证 调用API,观察是否成功返回函数的context信息。
  • API认证凭据问题汇总 Q:最多支持创建多少个应用(凭据)? 每个用户最多创建50个应用(凭据)。包括您自行创建的凭据和在云商店购买API生成的APP。 Q:APP认证的API,怎样实现不同的第三方之间无法知道对方调用情况? 创建多个应用(凭据),并绑定同一个API,分发给不同的第三方不一样的应用(凭据)。 Q:APP认证的API,有没有限制可以给多少个第三方使用? 没有限制。 Q:APP认证的API,是否需要自己创建应用(凭据)? 是,需要自行创建应用(凭据),并绑定API。创建完成应用(凭据)后,系统自动生成AppKey和AppSecret,将AppKey和AppSecret给第三方,就可以直接调用此API了。 Q:APP认证的API,第三方怎么调用? 您需要把AppKey和AppSecret提供给第三方,然后第三方通过SDK调用。具体SDK的调用步骤请参见使用APP认证调用API。 父主题: API认证