阿里云API網關提供多種針對客戶端請求的安全認證方式,包括阿里云APP認證方式、Jwt插件、第三方鑒權等。對于阿里云APP這種認證方式,目前您可以設置兩種認證形式,分別是簽名認證和簡單認證(AppCode),本文將詳細介紹簡單認證(AppCode)方式的使用。
注意事項
簡單認證方式免去了復雜的簽名過程,但是把AppCode
作為明文暴露網絡中傳輸,會帶來一些安全隱患,請務必重視。
客戶端和API網關之間務必使用HTTPS進行通信,避免使用HTTP協議進行數據傳輸。因為簡單認證方式,AppCode在傳輸過程中使用明文,而HTTP通信協議沒有加密,一旦網絡通信的網絡包被黑客抓取,有非常大的丟失AppCode的風險。
概述
對于請求的簽名認證方式,可參見簽名認證方式調用API。
簡單認證(AppCode)使用API網關頒發的
AppCode
進行身份認證,調用者將AppCode
放到請求頭中,或者放到請求的Query
參數中進行身份認證,實現快速調用API
的能力。簡單認證(AppCode)過程如下:創建簡單認證(AppCode)方式的API。
創建一個App(頒發
AppCode
)。將創建的簡單認證(AppCode)方式的API授權給App。
使用API網關頒發的
AppCode
進行身份認證。
創建簡單認證(AppCode)API
登錄API網關控制臺,在左側導航欄選擇API管理 > 分組管理,在分組管理頁面單擊右上角創建分組。
在創建分組頁面,選擇實例為所創建的API網關實例,填寫分組名稱和BasePath,單擊確定。
在左側導航欄選擇API管理 > API列表,在API列表頁面的右上角單擊創建API。
在創建API基本信息頁面,選擇已創建的分組,填寫API名稱,安全認證方式選擇為阿里云APP,AppCode認證選擇允許AppCode認證(Header)或允許AppCode認證(Header & Query)。
AppCode認證四個選項的說明如下:
選項
說明
上架云市場后開啟
默認不開啟,如果API上架云市場,則支持將AppCode放在Header中進行認證。
禁止AppCode認證
無論API是否上架云市場,都不開啟,都需要使用簽名方式調用。
允許AppCode認證(Header)
無論API是否上架云市場,都開啟,但只支持將AppCode放在Header中進行認證。
允許AppCode認證(Header & Query)
無論API是否上架云市場,都開啟,同時支持將AppCode放在Header中,或者將AppCode放在Query中進行認證。
選擇簽名算法,單擊下一步。
進入定義API請求欄可參見定義API請求,然后單擊下一步。
進入定義API后端服務可參見定義后端服務信息,單擊保存。
定義API參數的時候,不需要定義攜帶
AppCode
的頭或者Header
參數。API創建完成之后可以將API發布到環境中進行調試。
創建一個App
登錄API網關控制臺,左側導航欄選擇API調用 > 應用管理,在應用管理頁面右上角單擊創建APP。
在創建應用彈框中填寫應用名稱,單擊確定。
已創建的App會自動生成一個
AppCode
,可在應用管理頁面單擊已創建的App應用名稱進入應用詳情頁面找到。如果您是云市場用戶,在云市場購買API時云市場會為您創建一個 App。
簡單認證(AppCode)API授權給App
登錄API網關控制臺,在左側導航欄選擇API管理 > API列表,在API列表頁面選擇已創建的API名稱操作列下的,單擊授權。
在授權頁面選擇要授權的環境,授權有效時間,選擇要授權的應用。在我的應用,直接單擊搜索,會加載本賬號下的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