全部產品
Search
文件中心

Mobile Platform as a Service:API 授權

更新時間:Jul 13, 2024

瞭解 API 授權的使用情境。根據您的業務需求,開啟 API 授權、配置授權規則,定義授權方介面,並將授權規則應用到 API。

功能介紹

API 授權功能允許業務在 MGS 上定義通用的 API 訪問授權規則:

  1. 建立授權 API A 並在網關管理中配置,然後到業務 API B 配置中做關聯。

  2. 用戶端發起對後端業務 API B 的請求時,MGS 會根據 API 授權配置從該請求 Header 或 Cookie 中取出授權參數放到 Context 裡然後調用業務 API B 關聯的授權 API A,授權 API A Server 需要根據 Context 中的參數做業務許可權校正。

  3. 如校正合法,MGS 會將校正結果 Principal 添加在請求 Header 中,傳遞給後端業務 API B。如需緩衝,MGS 會緩衝校正結果 Principal,提高授權的效能。

40

使用情境

情境一

客戶有分布式 session,登入後會產生會話 ID。授權過程如下:

  1. 使用者 A 請求登入介面,登入成功後,產生會話 ID 和會話資訊儲存到分布式緩衝中,sessionId: {username:A, age:18, ...} ,並且下發 sessionId 到用戶端。

  2. 使用者 A 請求一個需要登入授權的介面,網關從請求 Header 中擷取 sessionId,發送給授權系統,授權系統根據 sesssionId 從分布式緩衝中擷取到使用者資訊,並且將 {username:A, age:18,...} 返回給網關。

  3. 網關判斷登入成功,將 {username:A, age:18,...} 添加在 Header 中,轉寄請求到後端的業務 Server。

情境二

用戶端基於 HMAC 的授權方案,授權過程如下:

  1. 使用者 A 登入成功後,下發一個 token 到用戶端,token=hmac(username+password)

  2. 使用者 A 請求一個需要登入授權的介面,網關從 Header 中擷取 token,發送給授權系統,授權系統根據再算一遍 HMAC,如果符合則返回使用者資訊 {username:A, age:18,...} 給網關。

  3. 網關判斷登入成功,將 {username:A, age:18,...} 添加在請求 Header 中,轉寄請求到後端的業務 Server。

操作步驟

配置授權規則

  1. 登入 mPaaS 控制台。在左側導覽列,點擊 後台服務管理 > 移動網關 菜單。

  2. 點擊 網關管理 標籤,在 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 授權 功能。開啟步驟如下:

  1. 登入 mPaaS 控制台。在左側導覽列,點擊 移動網關 菜單。

  2. 點擊 網關管理 標籤,確保 API 授權 按鈕開啟。

該 API 在請求後端系統前,會進行授權驗證。通過則接受請求,網關將請求路由到後端系統。否則,請求會被拒絕,調用方將收到授權失敗的錯誤響應。