阿里雲API Gateway提供多種針對用戶端請求的安全認證方式,包括阿里雲APP認證方式、Jwt外掛程式、第三方鑒權等。對於阿里雲APP這種認證方式,目前您可以設定兩種認證形式,分別是簽名認證和簡單認證(AppCode),本文將詳細介紹簡單認證(AppCode)方式的使用。
注意事項
簡單認證方式免去了複雜的簽名過程,但是把AppCode
作為明文暴露網路中傳輸,會帶來一些安全隱患,請務必重視。
用戶端和API Gateway之間務必使用HTTPS進行通訊,避免使用HTTP協議進行資料轉送。因為簡單認證方式,AppCode在傳輸過程中使用明文,而HTTP通訊協定沒有加密,一旦網路通訊的網路包被駭客抓取,有非常大的丟失AppCode的風險。
概述
對於請求的簽名認證方式,可參見簽名認證方式調用API。
簡單認證(AppCode)使用API Gateway頒發的
AppCode
進行身份認證,調用者將AppCode
放到要求標頭中,或者放到請求的Query
參數中進行身份認證,實現快速調用API
的能力。簡單認證(AppCode)過程如下:建立簡單認證(AppCode)方式的API。
建立一個App(頒發
AppCode
)。將建立的簡單認證(AppCode)方式的API授權給App。
使用API Gateway頒發的
AppCode
進行身份認證。
建立簡單認證(AppCode)API
登入API Gateway控制台,在左側導覽列選擇API管理 > 分組管理,在分組管理頁面單擊右上方建立分組。
在建立分組頁面,選擇執行個體為所建立的API Gateway執行個體,填寫分組名稱和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 Gateway控制台,左側導覽列選擇API調用 > 應用管理,在應用管理頁面右上方單擊建立APP。
在建立應用彈框中填寫應用程式名稱,單擊確定。
已建立的App會自動產生一個
AppCode
,可在應用管理頁面單擊已建立的App應用程式名稱進入應用詳情頁面找到。如果您是雲市場使用者,在雲市場購買API時雲市場會為您建立一個 App。
簡單認證(AppCode)API授權給App
登入API Gateway控制台,在左側導覽列選擇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