瞭解 API 授權的使用情境。根據您的業務需求,開啟 API 授權、配置授權規則,定義授權方介面,並將授權規則應用到 API。
功能介紹
API 授權功能允許業務在 MGS 上定義通用的 API 訪問授權規則:
建立授權 API A 並在網關管理中配置,然後到業務 API B 配置中做關聯。
用戶端發起對後端業務 API B 的請求時,MGS 會根據 API 授權配置從該請求 Header 或 Cookie 中取出授權參數放到 Context 裡然後調用業務 API B 關聯的授權 API A,授權 API A Server 需要根據 Context 中的參數做業務許可權校正。
如校正合法,MGS 會將校正結果 Principal 添加在請求 Header 中,傳遞給後端業務 API B。如需緩衝,MGS 會緩衝校正結果 Principal,提高授權的效能。
使用情境
情境一
客戶有分布式 session,登入後會產生會話 ID。授權過程如下:
使用者 A 請求登入介面,登入成功後,產生會話 ID 和會話資訊儲存到分布式緩衝中,
sessionId: {username:A, age:18, ...}
,並且下發 sessionId 到用戶端。使用者 A 請求一個需要登入授權的介面,網關從請求 Header 中擷取 sessionId,發送給授權系統,授權系統根據 sesssionId 從分布式緩衝中擷取到使用者資訊,並且將
{username:A, age:18,...}
返回給網關。網關判斷登入成功,將
{username:A, age:18,...}
添加在 Header 中,轉寄請求到後端的業務 Server。
情境二
用戶端基於 HMAC 的授權方案,授權過程如下:
使用者 A 登入成功後,下發一個 token 到用戶端,
token=hmac(username+password)
。使用者 A 請求一個需要登入授權的介面,網關從 Header 中擷取 token,發送給授權系統,授權系統根據再算一遍 HMAC,如果符合則返回使用者資訊
{username:A, age:18,...}
給網關。網關判斷登入成功,將
{username:A, age:18,...}
添加在請求 Header 中,轉寄請求到後端的業務 Server。
操作步驟
配置授權規則
登入 mPaaS 控制台。在左側導覽列,點擊 後台服務管理 > 移動網關 菜單。
點擊 網關管理 標籤,在 API 授權 下方,點擊 建立授權方 或點擊已存在的授權規則記錄列表中操作列中的 詳情,進入授權規則配置頁面:
授權方名稱:必填,授權規則的名稱。
授權方介面:必填,用於驗證請求授權情況的介面。
授權緩衝:是否緩衝授權的驗證結果。
緩衝TTL:驗證結果的緩衝存活時間。
身份來源:如果點擊 添加來源欄位,填寫用於授權的請求參數,表明請求身份的資訊,由以下欄位組成:
位置:參數所處位置,
header
或者cookie
。欄位:參數名稱。
說明如果實際 API 請求時的身份來源欄位缺失,授權驗證無法通過。
定義授權方介面
如果後端系統提供的授權介面為 HTTP 類型,需要將授權 API 配置為 POST 方法。
在添加授權關係前,業務系統需要提前開發一個 Auth API
。當 API 需要驗證授權關係時,會調用 Auth API
進行授權校正。Auth API
的定義(請求和響應)遵循以下的標準:
AuthRequest
public class AuthRequest {
private Map<String,String> context;
}
AuthResponse
public class AuthResponse {
private boolean success;
private Map<String,String> principal;
}
介面樣本
@PostMapping("/testAuth")
public AuthResponse testAuth(@RequestBody AuthRequest authRequest) {
String sid = authRequest.getContext().get("sid");
Map<String, String> principal = new HashMap<>();
principal.put("uid", sid + "_uid");
AuthResponse authResponse = new AuthResponse();
authResponse.setSuccess(true);
authResponse.setPrincipal(principal);
return authResponse;
}
當驗證授權的響應中
success
欄位值為true
時,網關會根據緩衝策略緩衝principal
資訊,然後將principal
資訊放入這次請求的header
中,透傳到後端業務系統中。沒有principal也需要傳個空Map。當驗證授權的響應中
success
欄位值為false
時,網關會返回 2000 錯誤碼,用戶端需要根據 2000 做相應的操作,例如彈出登入框。
使用授權規則
當授權規則配置後,可以在 API 配置頁面中的 進階配置 > API 授權 中選擇對應的規則,為該 API 啟用授權功能。
要使用 API 授權,確保已在 網關管理 頁面中開啟 API 授權 功能。開啟步驟如下:
登入 mPaaS 控制台。在左側導覽列,點擊 移動網關 菜單。
點擊 網關管理 標籤,確保 API 授權 按鈕開啟。
該 API 在請求後端系統前,會進行授權驗證。通過則接受請求,網關將請求路由到後端系統。否則,請求會被拒絕,調用方將收到授權失敗的錯誤響應。