全部產品
Search
文件中心

CDN:配置遠程鑒權

更新時間:Feb 21, 2025

如果您有自己的鑒權伺服器,可以通過配置遠程鑒權,將使用者請求轉寄至您指定的鑒權伺服器,由鑒權伺服器對使用者請求進行校正。

功能介紹

遠程鑒權和URL鑒權的作用一樣,都用於保護資源,讓資源只被授權成功的使用者訪問,非授權使用者將無法訪問。這兩個功能在技術實現方案上有如下差異:

  • URL鑒權:使用者把網域名稱的鑒權規則下發給CDN節點,由CDN節點完成鑒權的整個資料互動流程。

  • 遠程鑒權:使用者有自己單獨設定的鑒權伺服器,CDN節點收到使用者請求後,需要把使用者請求轉寄給鑒權伺服器完成鑒權,鑒權伺服器由使用者自主管理。

遠程鑒權功能的資料互動流程如下:遠程鑒權互動圖

序號

互動說明

使用者發起的資源訪問請求到達CDN節點,請求中攜帶了鑒權參數。例如:

  • 原始請求URL:https://example.com/123/test.txt?key=xxxxxxxxxx

  • 原始請求中攜帶Header:test=123

CDN節點收到使用者請求,將使用者請求直接轉寄(或者經過指定的規則處理後轉寄)給鑒權伺服器。例如:

  • 鑒權伺服器位址:https://192.0.2.1/auth

  • CDN控制台上的遠程鑒權功能設定為:保留所有請求參數保留所有請求header

  • CDN轉寄給鑒權伺服器的請求URL為:https://192.0.2.1/auth?key=xxxxxxxxxx

  • CDN轉寄給鑒權伺服器的請求包含header:test=123

鑒權伺服器根據使用者請求中攜帶的鑒權參數給出鑒權結果,並返回給CDN節點。

CDN節點根據鑒權伺服器返回的鑒權結果執行對應的動作,並返回對應的資料給使用者。

鑒權結果舉例說明如下:

  • 舉例1:鑒權成功,CDN節點與使用者開始正常的快取資料訪問互動。

  • 舉例2:鑒權失敗,CDN節點返回403狀態代碼給使用者。

  • 舉例3:鑒權失敗,CDN節點對使用者訪問進行限速。

  • 舉例4:鑒權逾時,CDN節點執行鑒權逾時的預設動作,即允許存取或者拒絕使用者請求。

注意事項

  • 配置遠程鑒權後,鑒權失敗的請求仍可訪問到CDN節點,但會被CDN節點拒絕並返回403狀態代碼,CDN日誌中仍會記錄用戶端的請求記錄。

  • 由於遠程鑒權,將使用者請求轉寄至您指定的鑒權伺服器,由鑒權伺服器對使用者請求進行校正,因此在惡意請求被CDN節點攔截的同時,會產生少量的流量費用,如果用戶端使用HTTPS協議訪問,還會產生HTTPS請求數費用(因為攔截惡意請求的時候,也同時消耗了CDN節點的處理資源)。

操作步驟

  1. 登入CDN控制台

  2. 在左側導覽列,單擊域名管理

  3. 域名管理頁面,找到目標網域名稱,單擊操作列的管理

  4. 在指定網域名稱的左側導覽列,單擊访问控制

  5. 單擊遠程鑒權頁簽。

    1. 開啟遠程鑒權開關,根據介面提示,配置遠程鑒權資訊。

      說明

      開啟遠程鑒權功能後,使用者的每次請求都要轉寄給鑒權伺服器處理,當請求訪問量大時,需考慮鑒權伺服器的壓力和效能。

      參數

      說明

      鑒權伺服器位址

      鑒權伺服器對外可以訪問的地址。系統會對您輸入的鑒權伺服器位址進行校正,包括格式校正和值校正。

      • 格式要求

        鑒權地址支援HTTP協議和HTTPS協議,格式請參考以下幾種類型:

        • http://example.com/auth

        • https://example.com/auth

        • http://192.0.2.1/auth

        • https://192.0.2.1/auth

      • 值要求

        值不能包含127.0.0.1和localhost,因為這類本地地址屬於無效地址。

      要求方法

      鑒權伺服器支援的要求方法。支援GETHEADPOST這三種要求方法,預設使用GET方法請求。

      鑒權檔案類型

      • 所有檔案類型:所有的檔案類型都參與鑒權。

      • 指定檔案類型:僅指定的檔案類型參與鑒權。

        • 指定檔案類型時,如果您輸入多個檔案類型,多個檔案類型用豎線(|)分隔,例如:mp4|flv。

        • 檔案類型區分大小寫,即.jpg和JPG是兩種不同的檔案類型。

      URL鑒權參數

      保留參數設定

      用於控制使用者請求URL中需要參與鑒權的參數。可以選擇保留所有參數保留指定參數刪除所有URL參數

      • 保留指定參數時,多個參數用豎線(|)分隔,例如:user|token。

      • 參數區分大小寫,即key和KEY是兩種不同的參數。

      添加自訂參數

      為CDN節點轉寄給鑒權伺服器的請求URL添加自訂參數。您可以自訂設定參數和取值,也可以直接使用CDN控制台上預設的變數。

      • 自訂設定參數和取值時,要求如下:

        • 多個參數用豎線(|)分隔,例如:token=$arg_token|vendor=ali_cdn。

        • 參數值區分大小寫,即key和KEY是兩種不同的參數值。

      • 使用預設變數時,您可以提取變數的值添加到CDN轉寄給鑒權伺服器的請求上。

        例如,選擇提取變數$http_host,則使用者請求的URL地址會加上host=$http_host,此處的host表示使用者要求標頭中的host值。變數名稱與變數含義的介紹,請參見變數名稱

      要求標頭鑒權參數

      保留要求標頭設定

      用於控制使用者要求標頭中需要參與鑒權的參數。可以選擇保留所有參數保留指定參數刪除所有要求標頭參數

      • 保留指定參數時,多個要求標頭用豎線(|)分隔,例如:user_agent|referer|cookies。

      • 參數不區分大小寫,即http_remote_addr和HTTP_Remote_Addr一樣。

      說明

      選擇“保留所有參數”時,CDN節點預設會刪除HOST頭,如果您需要保留HOST頭,可通過“保留指定參數”或者“添加自訂參數”來保留。CDN節點預設刪除HOST頭的原因是CDN節點轉寄給鑒權伺服器的鑒權請求中攜帶的HOST頭是加速網域名稱,這可能會導致鑒權伺服器無法識別鑒權請求,從而導致訪問時返回404狀態代碼,導致鑒權失敗。

      添加自訂參數

      用於CDN節點轉寄給鑒權伺服器的要求標頭添加自訂參數。您可以自訂設定參數和取值,也可以直接使用CDN控制台上預設的變數。

      • 自訂設定參數和取值時,要求如下:

        • 多個要求標頭用豎線(|)分隔,例如:User-Agent=$http_user_agent|vendor=ali_cdn。

        • 參數不區分大小寫,即http_remote_addr和HTTP_Remote_Addr一樣。

      • 使用預設變數時,您可以提取變數的值添加到CDN轉寄給鑒權伺服器的請求上。

        例如,選擇提取變數$http_host,則使用者請求的URL地址會加上host=$http_host,此處的host表示使用者要求標頭中的host值。變數名稱與變數含義的介紹,請參見變數名稱

      鑒權結果對應狀態代碼

      鑒權成功狀態代碼

      說明 鑒權伺服器在鑒權成功時,會向CDN返回特定的HTTP狀態代碼。您可以配置多個狀態代碼,多個狀態代碼之間需用英文逗號分隔。

      樣本 若將鑒權成功狀態代碼設定為 200,206,則當鑒權伺服器返回 200 或 206 時,表示鑒權成功。

      異常處理機制 為避免因異常情況導致所有使用者請求被阻斷,如果鑒權伺服器返回的狀態代碼既不屬於成功狀態代碼,也不屬於失敗狀態代碼,CDN節點將預設放過該請求。

      鑒權失敗狀態代碼

      說明 鑒權伺服器在鑒權失敗時,會向CDN返回特定的HTTP狀態代碼。您可以配置多個狀態代碼,多個狀態代碼之間需用英文逗號分隔。

      樣本 若將鑒權失敗狀態代碼設定為 400,403,則當鑒權伺服器返回 400 或 403 時,表示鑒權失敗。

      異常處理機制 為避免因異常情況導致所有使用者請求被阻斷,如果鑒權伺服器返回的狀態代碼既不屬於成功狀態代碼,也不屬於失敗狀態代碼,CDN節點將預設放過該請求。

      其他狀態代碼是否允許存取

      • :為避免因為一些異常情況阻斷所有的使用者請求,如果鑒權伺服器返回的狀態代碼既不是成功狀態代碼,也不是失敗狀態代碼,CDN節點預設放過使用者請求。

        說明

        例如:

        • 鑒權成功狀態代碼設定為200,鑒權伺服器返回201時,結果為放過使用者請求。

        • 鑒權失敗狀態代碼設定為403,鑒權伺服器返回404時,結果為放過使用者請求。

      • :表示在鑒權伺服器返回的狀態代碼既不是成功狀態代碼,也不是失敗狀態代碼的情況下,CDN節點將會拒絕使用者請求。

      鑒權失敗之後CDN執行的操作

      響應自訂狀態代碼

      使用者請求鑒權失敗時,CDN節點返回給使用者的狀態代碼。

      例如,將響應自訂狀態代碼設定為403,當使用者請求鑒權失敗時,CDN節點會返回403給使用者。

      鑒權逾時配置

      鑒權逾時時間長度

      統計的是從CDN節點發起鑒權請求開始,到CDN節點收到鑒權伺服器返回的結果為止的時間。單位為毫秒,鑒權逾時時間長度最長可以設定為3000。

      鑒權逾時之後的動作

      CDN與鑒權伺服器之間的資料互動逾時後,CDN對使用者請求的處理。支援通過拒絕這兩種動作,區別如下:

      • 通過:鑒權逾時,CDN將直接允許使用者請求。

      • 拒絕:鑒權逾時,CDN拒絕使用者請求,返回上面配置的響應自訂狀態代碼給使用者。

  6. 單擊確定,完成配置。

    成功配置遠程鑒權功能後,您可以在遠程鑒權頁簽下,對當前的配置進行修改或關閉遠程鑒權功能。

變數名稱

添加自訂參數時,您可以選擇直接使用CDN控制台上預設的變數。變數名稱與變數含義見下表。

變數名稱

變數含義

$http_host

要求標頭中的Host值。

$http_user_agent

要求標頭中的User-Agent值。

$http_referer

要求標頭中的Referer值。

$http_content_type

要求標頭中的Content-Type值。

$http_x_forward_for

要求標頭中的X-Forwarded-For值。

$remote_addr

請求的Client IP資訊。

$scheme

請求的協議類型。

$server_protocol

請求的協議版本。

$uri

請求的原始URI。

$args

請求的Query String,不包含問號(?)。

$request_method

要求方法。

$request_uri

uri+'?'+args的內容。

常見問題

相關API

BatchSetCdnDomainConfig