全部产品

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

更新时间:2019-05-17 14:32:31

1.概述

阿里云API网关提供多种针对客户端请求的安全认证方式,包括阿里云APP认证方式、OpenID Connect等。对于”阿里云APP“这种认证方式,目前用户可以设置两种认证形式:

  1. 签名认证;
  2. 简单认证。

对于请求的签名认证方式,可以参考这个文档:请求签名说明文档:https://help.aliyun.com/document_detail/29475.html

本文将详细描述简单认证方式的设置方式和调用方式。简单认证,顾名思义,和签名认证方式相比要简单很多,省去了复杂的生成签名的过程。简单认证方式直接使用API网关颁发的AppCode进行身份认证,调用者将AppCode放到请求头中,或者放到请求的Query参数中进行身份认证,实现快速调用API的能力。下面是对整个流程的描述:

  1. API提供者创建API的时候选择”阿里云APP“认证模式,且支持AppCode认证(所有云市场的API默认都支持AppCode);
  2. API调用者在API网关”应用管理“创建一个APP。云市场用户在云市场购买API时云市场会为您创建一个 APP;
  3. API提供者给调用者的APP进行API授权,具体授权方式请参考文档: https://help.aliyun.com/document_detail/29497.html
  4. API调用者到API网关控制台的”应用管理“找到AppCode/AppSecret进行签名认证的调用或者AppCode进行简单认证的API调用。

2. 创建支持简单认证方式API

  1. API提供者在创建API安全认证方式时需要选择”阿里云APP”,或者选择”OpenId Connect & 阿里云APP“;
  2. AppCode认证选项选择允许AppCode认证相关的几个选项;

设置简单认证模式

下面解释下AppCode认证四个选项的含义进行详细解释:

  • 上架云市场后开启:默认不开启,如果上架API上架云市场,则支持将AppCode放在Header中进行认证;
  • 禁止AppCode认证:无论API是否上架云市场,都不开启,都需要使用签名方式调用;
  • 允许AppCode认证(Header):无论API是否上架云市场,都开启,但只支持将AppCode放在Header中进行认证;
  • 允许AppCode认证(Header & Query):无论API是否上架云市场,都开启,同时支持将AppCode放在Header中,或者将AppCode放在Query中进行认证;

注意,定义API参数的时候,不需要定义携带AppCode的头或者Header参数

3. 调用方法

API提供者将API设置成允许AppCode调用之后,API调用者就可以使用简单认证方式进行调用了,不用再在客户端实现复杂的签名算法了。本章我们介绍下如何通过简单认证方式调用API。主要有两种方式,一种是将AppCode放在Header中进行调用,一种是将AppCode放在Query参数中进行调用。

3.1 将AppCode放在Header中

  • 请求Header中添加一个”Authorization“参数;
  • Authorization字段的值的格式为“APPCODE + 半角空格 +APPCODE值”。

格式:

  1. Authorization:APPCODE AppCode

示例:

  1. Authorization:APPCODE 3F2504E04F8911D39A0C0305E82C3301

3.2 将AppCode放在Query中

  • 请求Query中添加的“AppCode”参数(同时支持”appcode” , “appCode” , “APPCODE” , “APPCode”四种写法);
  • “AppCode”参数的值为AppCode的值。

示例:

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

4.风险提示

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

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