使用简单认证(AppCode)方式调用API

阿里云API网关提供多种针对客户端请求的安全认证方式,包括阿里云APP认证方式、Jwt插件、第三方鉴权等。对于阿里云APP这种认证方式,目前您可以设置两种认证形式,分别是签名认证和简单认证(AppCode),本文将详细介绍简单认证(AppCode)方式的使用。

注意事项

简单认证方式免去了复杂的签名过程,但是把AppCode作为明文暴露网络中传输,会带来一些安全隐患,请务必重视。

重要

客户端和API网关之间务必使用HTTPS进行通信,避免使用HTTP协议进行数据传输。因为简单认证方式,AppCode在传输过程中使用明文,而HTTP通信协议没有加密,一旦网络通信的网络包被黑客抓取,有非常大的丢失AppCode的风险。

概述

  • 对于请求的签名认证方式,可参见签名认证方式调用API

  • 简单认证(AppCode)使用API网关颁发的AppCode进行身份认证,调用者将AppCode放到请求头中,或者放到请求的Query参数中进行身份认证,实现快速调用API的能力。简单认证(AppCode)过程如下:

    1. 创建简单认证(AppCode)方式的API。

    2. 创建一个App(颁发AppCode)。

    3. 将创建的简单认证(AppCode)方式的API授权给App。

    4. 使用API网关颁发的AppCode进行身份认证。

创建简单认证(AppCode)API

  1. 登录API网关控制台,在左侧导航栏选择API管理 > 分组管理,在分组管理页面单击右上角创建分组

  2. 在创建分组页面,选择实例为所创建的API网关实例,填写分组名称BasePath,单击确定

  3. 在左侧导航栏选择API管理 > API列表,在API列表页面的右上角单击创建API

  4. 在创建API基本信息页面,选择已创建的分组,填写API名称安全认证方式选择为阿里云APPAppCode认证选择允许AppCode认证(Header)允许AppCode认证(Header & Query)

    358fcadb17655c8e8d14e358d2d96d67

    AppCode认证四个选项的说明如下:

    选项

    说明

    上架云市场后开启

    默认不开启,如果API上架云市场,则支持将AppCode放在Header中进行认证。

    禁止AppCode认证

    无论API是否上架云市场,都不开启,都需要使用签名方式调用。

    允许AppCode认证(Header)

    无论API是否上架云市场,都开启,但只支持将AppCode放在Header中进行认证。

    允许AppCode认证(Header & Query)

    无论API是否上架云市场,都开启,同时支持将AppCode放在Header中,或者将AppCode放在Query中进行认证。

  5. 选择签名算法,单击下一步

  6. 进入定义API请求栏可参见定义API请求,然后单击下一步

  7. 进入定义API后端服务可参见定义后端服务信息,单击保存

说明
  • 定义API参数的时候,不需要定义携带AppCode的头或者Header参数。

  • API创建完成之后可以将API发布到环境中进行调试。

创建一个App

  1. 登录API网关控制台,左侧导航栏选择API调用 > 应用管理,在应用管理页面右上角单击创建APP

  2. 在创建应用弹框中填写应用名称,单击确定

说明
  • 已创建的App会自动生成一个AppCode,可在应用管理页面单击已创建的App应用名称进入应用详情页面找到。

  • 如果您是云市场用户,在云市场购买API时云市场会为您创建一个 App。

简单认证(AppCode)API授权给App

  1. 登录API网关控制台,在左侧导航栏选择API管理 > API列表,在API列表页面选择已创建的API名称操作列下的image,单击授权

  2. 在授权页面选择要授权的环境授权有效时间选择要授权的应用。在我的应用,直接单击搜索,会加载本账号下的APP,单击添加选中确定

使用AppCode身份认证

简单认证(AppCode)调用API,有两种方式,一种是将AppCode放在Header中进行调用,一种是将AppCode放在Query参数中进行调用。

方式一:将AppCode放在Header中

  • 在请求Header中添加一个Authorization参数。

  • Authorization字段的值的格式为APPCODE + 半角空格 +APPCODE值。格式如下:

    Authorization:APPCODE AppCode值

    示例:

    Authorization:APPCODE 3F2504E04F8911D39A0C0305E82C3301
    重要

    当后端服务为HTTP函数时,Authorization不会透传到后端服务,会被HTTP函数的Authorization覆盖,建议将AppCode放在Query中。

方式二:将AppCode放在Query中

  • 在请求Query中添加AppCode参数(同时支持appcode , appCode , APPCODE , APPCode四种写法)。

  • AppCode参数的值为AppCode的值。

示例:

http://www.aliyum.com?AppCode=3F2504E04F8911D39A0C0305E82C3301