全部產品
Search
文件中心

HTTPDNS:實現鑒權訪問

更新時間:Aug 29, 2025

1. 背景

為了避免可能存在的盜刷問題對您的計費造成影響,我們設計了鑒權機制對此進行防範,您可以按此文檔指引進行接入。

2. 鑒權方案

由於老使用者已經發布了產品,採用的是非鑒權功能方式接入,這部分產品的使用者需要繼續訪問非鑒權介面。

所以我們開放一個新的鑒權介面,產品新版本可以逐漸遷移至新介面,當舊app使用者減少到一定量後,可以開啟加簽訪問開關,以避免對計費系統的影響,如下圖所示。

image

2.1 存量使用者移轉方案

  • 開啟加簽訪問開關,會導致老版本的存量正在使用產品的使用者,無法訪問HttpDNS服務。

  • 引導存量使用者更新版本,逐漸遷移至鑒權介面。

  • 非鑒權介面存量產品使用者下降,直至可以接受開啟加簽訪問開關帶來的損失的時候,可以手動開啟加簽訪問開關。

2.2 新使用者使用方式情節

  • 為避免鑒權帶來的額外接入成本,加簽訪問開關預設是關閉的。

  • 如果僅需要鑒權介面功能,請手動開啟加簽訪問開關。

2.3 加簽訪問介面開關的管理

  • 關閉時,可能會引入安全隱患。

  • 只有開啟加簽訪問開關時,才能避免被攻擊導致的費用。

3. 簽名產生和鑒權機制

警告

使用HTTP API時,務必閱讀最佳實務建議,否則存在業務故障風險。

3.1 簽名產生演算法及樣本

鑒權介面

  • http://47.74.XXX.XXX/{account_id}/sign_d

  • http://47.74.XXX.XXX/{account_id}/sign_resolve

重要
  • 其中的 {account_id} 需要替換為使用者的HTTPDNS Account ID,在HTTPDNS控制台上可以獲得這個ID。

  • 鑒權介面可以添加IP參數,是否添加該參數及參數內容不影響簽名的計算。

  • 服務IP列表擷取可以參考:如何擷取解析服務地址

簽名演算法

sign = md5sum( host-secret-timestamp )

鑒權欄位說明

欄位

描述

host

需要被解析的host,與URL中的host參數取同樣的值。

secret

由伺服器負責產生,控制台 > 開發配置擷取。

image

timestamp

簽名失效時間,1970年1月1日以來的秒數(整型正數,固定長度10)。

說明

簽名最長有效時間不超過24小時。

簽名樣本

  • 樣本1(普通解析API介面):

    • 原請求:http://47.74.XXX.XXX/{account_id}/d?host=www.aliyun.com

    • 假設密鑰為:IAmASecret,希望在北京時間2018-08-15 15:00:00失效(時間戳記1534316400)

    • sign = md5sum(“www.aliyun.com-IAmASecret-1534316400”) = 60c71e98b6d7fcbb366243e224eab457

    • 鑒權請求:http://47.74.XXX.XXX/{account_id}/sign_d?host=www.aliyun.com&t=1534316400&s=60c71e98b6d7fcbb366243e224eab457

  • 樣本2(批量解析API介面):

    • 原請求:

      http://47.74.XXX.XXX/{account_id}/resolve?host=www.aliyun.com,www.taobao.com

    • 假設密鑰為:IAmASecret,希望在北京時間2018-08-15 15:00:00失效(時間戳記1534316400)

    • sign = md5sum(“www.aliyun.com,www.taobao.com-IAmASecret-1534316400”) = 12a3f6b1b14a46ca813ca6439beb59a4

    • 鑒權請求:http://47.74.XXX.XXX/{account_id}/sign_resolve?host=www.aliyun.com,www.taobao.com&t=1534316400&s=12a3f6b1b14a46ca813ca6439beb59a4

此方案優缺點

  • 缺點

    • 用戶端時間不同。

    • 密鑰放在用戶端丟失有風險。

  • 優點

    • 無需去伺服器拉取。

3.2 鑒權響應

  • 鑒權成功時,HTTP響應的狀態代碼為200,響應結果同原單個網域名稱解析 中的 API響應說明

  • 鑒權失敗時,HTTP響應的狀態代碼為403400,響應結果同時也返回具體的錯誤碼,響應結果以JSON格式表示。

     { "code": "InvalidSignature" }

3.3 狀態代碼說明

HTTP狀態代碼

錯誤碼

描述

403

SignatureExpired

時間戳記已到期

403

InvalidSignature

簽名不正確

400

InvalidDuration

簽名有效期間過長(最長86400秒)

400

InvalidSignature

簽名格式不正確

400

InvalidTimestamp

時間戳記格式不正確

400

AccountNotExists

賬戶不存在或被禁用