全部產品
Search
文件中心

ApsaraVideo VOD:遠程鑒權

更新時間:Jul 13, 2024

遠程鑒權功能是一種存取控制功能,用於保護資源。遠程鑒權是指對發送到阿里雲CDN邊緣節點上的使用者請求進行校正,並根據鑒權伺服器返回的校正結果來判斷如何處理使用者的請求。開啟遠程鑒權意味著資源只能被授權成功的使用者訪問。本文介紹遠程鑒權的實現原理及控制台開啟遠程鑒權步驟,並提供相關API參考。

實現原理

ApsaraVideo for VOD服務同時支援URL鑒權和遠程鑒權功能以避免網站資源被非法下載或盜用。這兩個功能在技術實現方案上有如下差異:

  • URL鑒權:您把網域名稱的鑒權規則下發給CDN節點,由CDN節點完成鑒權的整個資料互動流程。更多關於URL鑒權的資訊,請參見URL鑒權

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

遠程鑒權的實現原理如下:遠程鑒權原理圖

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

  2. CDN節點收到使用者請求,將使用者請求轉寄給鑒權伺服器。

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

  4. CDN節點根據鑒權伺服器返回的鑒權結果來判斷如何處理使用者的請求。鑒權成功即允許訪問,鑒權失敗會拒絕訪問或進行相應的限制。鑒權結果舉例說明如下:

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

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

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

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

使用說明

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

操作步驟

  1. 登入ApsaraVideo for VOD控制台

  2. 在點播控制台左側導覽列選擇組態管理

  3. 單擊分發加速配置 > 網域名稱管理,進入網域名稱管理頁面。

  4. 選擇您要配置的網域名稱,單擊配置

  5. 單擊存取控制

  6. 單擊遠程鑒權頁簽。

  7. 開啟遠程鑒權,配置遠程鑒權資訊。2021-12-27_15-00-00

    2021-12-30_11-11-03參數和說明如下表所示:

    參數

    說明

    鑒權伺服器位址

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

    • 格式要求

      格式必須為以下幾種類型之一:

      • 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這三種要求方法。

    • POST

      • 參數在請求體中傳輸,地址欄不變。

      • 理論上沒有限制資料轉送的大小。

      • 請求不會被緩衝,也不會被保留在瀏覽器記錄中。

      • 安全性相對較高。

    • GET

      • 參數在請求行中傳輸,地址欄會顯示提交的參數值。

      • 受瀏覽器限制,資料轉送最大支援1024位元組。

      • 請求可被緩衝,也會被保留在瀏覽器記錄中。

      • 安全性相對較低。

    • HEAD

      HEAD和GET方法相同,只是伺服器響應時,HEAD不返回請求體。

    鑒權檔案類型

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

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

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

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

    保留參數設定

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

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

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

    添加自訂參數

    為CDN節點轉寄給鑒權伺服器的請求URL添加自訂參數。

    您可以選擇自訂設定參數和取值,也可以選擇選擇參數直接使用點播控制台上預設的變數。

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

      • 多個參數用豎線(|)分隔,例如: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節點轉寄給鑒權伺服器的要求標頭添加自訂參數。

    您可以選擇自訂來設定參數和取值,也可以選擇選擇參數直接使用點播控制台上預設的變數。

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

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

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

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

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

    鑒權成功狀態代碼

    鑒權伺服器在鑒權成功時返回的HTTP狀態代碼,即鑒權結果。建議鑒權成功狀態代碼設定為2XX。

    例如,將鑒權成功狀態代碼設定為200,當鑒權伺服器返回200時,表示鑒權成功。如果鑒權伺服器返回的狀態代碼不是成功狀態代碼,也不是失敗狀態代碼,結果即為鑒權逾時。

    鑒權失敗狀態代碼

    鑒權伺服器在鑒權失敗時返回的HTTP狀態代碼,即鑒權結果。建議鑒權失敗狀態代碼設定為4XX。

    例如,將鑒權失敗狀態代碼設定為403,當鑒權伺服器返回403時,表示鑒權失敗。如果鑒權伺服器返回的狀態代碼不是成功狀態代碼,也不是失敗狀態代碼,結果即為鑒權逾時。

    響應自訂狀態代碼

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

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

    逾時時間長度

    統計的是從CDN節點發起鑒權請求開始,到CDN節點收到鑒權伺服器返回的結果為止的時間。

    單位為毫秒,最長可以設定為3000毫秒。

    逾時之後的動作

    CDN節點與鑒權伺服器之間的資料互動逾時後,CDN節點對使用者請求的處理。取值:

    • 允許存取:鑒權逾時,CDN節點將直接允許存取使用者的請求。

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

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

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

變數名稱

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

變數名稱

變數含義

$http_host

要求標頭中的host值。

$http_user_agent

要求標頭中的user_agent值。

$http_referer

要求標頭中的referer值。

$http_content_type

要求標頭中的content_type值。

$http_x_forward_for

要求標頭中的x_forward_for值。

$remote_addr

請求的client ip資訊。

$scheme

請求的協議類型。

$server_protocol

請求的協議版本。

$uri

請求的原始uri。

$args

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

$request_method

要求方法。

$request_uri

uri+'?'+args的內容。

相關API

大量設定網域名稱