共用方式為


使用令牌驗證保護 Azure 內容傳遞網路 資產

重要

這是 Edgio 中的 Azure CDN 進階版特有的功能,若要設定關於 Microsoft 的 Azure CDN 規則,請使用標準規則引擎Azure CDN from Akamai 不提供進階規則。 如需 CDN 功能的完整比較,請參閱 Azure CDN 產品功能

概觀

令牌驗證是一種機制,可讓您防止 Azure 內容傳遞網路將資產服務至未經授權的用戶端。 執行權杖驗證通常是為了防止內容「熱連結」(hotlinking),在熱連結中,不同的網站 (例如留言板) 會在未經許可的情況下使用您的資產。 熱連結會影響內容傳遞成本。 當您在內容傳遞網路上啟用令牌驗證時,要求會在內容傳遞網路傳遞內容之前由內容傳遞網路邊緣伺服器進行驗證。

運作方式

權杖驗證會藉由提出要求需包含權杖值 (其中包含關於要求者的編碼資訊) 的要求,來確認要求是由受信任的網站所產生。 只有在編碼資訊符合需求時,才會將內容提供給要求者,否則會拒絕要求。 您可以使用下列一或多個參數來設定需求:

  • 國家/地區:允許或拒絕來自以其國碼/地區碼指定的國家/地區的要求。
  • URL:只允許與指定資產或路徑相符的要求。
  • Host (主機)︰允許或拒絕在要求標頭中使用指定主機的要求。
  • Referrer (訪客來源)︰允許或拒絕來自指定訪客來源的要求。
  • IP address (IP 位址)︰只允許來自特定 IP 位址或 IP 子網路的要求。
  • Protocol (通訊協定)︰根據用來要求內容的通訊協定來允許或拒絕要求。
  • Expiration time (到期時間)︰指派日期和時段,以確保連結只能在有限的時段內維持有效。

如需詳細資訊,請參閱設定權杖驗證中每個參數的詳細設定範例。

重要

如果已針對此帳戶上的任何路徑啟用權杖授權,則標準快取模式就會是唯一可用於查詢字串快取的模式。 如需詳細資訊,請參閱使用查詢字串控制 Azure 內容傳遞網路快取行為

參考架構

下列工作流程圖表說明內容傳遞網路如何使用令牌驗證來處理 Web 應用程式。

內容傳遞網路令牌驗證工作流程的螢幕快照。

內容傳遞網路端點上的令牌驗證邏輯

下列流程圖說明 Azure 內容傳遞網路 如何在內容傳遞網路端點上設定令牌驗證時驗證用戶端要求。

內容傳遞網路令牌驗證邏輯的螢幕快照。

設定權杖驗證

  1. 從 Azure 入口網站,流覽至您的內容傳遞網路配置檔,然後選取 [管理] 以啟動補充入口網站。

    內容傳遞網路配置檔管理按鈕的螢幕快照。

  2. 將滑鼠移至 [HTTP 大型] 上,然後選取飛出視窗上的 [權杖驗證]。 接著,您便可以依下列方式設定加密金鑰和加密參數:

    1. 建立一或多個加密金鑰。 加密金鑰會區分大小寫,可包含英數字元的任何組合。 不允許任何其他類型的字元,包括空格。 長度上限是 250 個字元。 為了確保加密金鑰為隨機的值,建議使用 OpenSSL 工具建立金鑰。

      OpenSSL 工具具有以下語法:

      rand -hex <key length>

      例如:

      OpenSSL> rand -hex 32

      若要避免產生停機時間,請建立主要和備份金鑰。 當主要金鑰正在更新時,可用備份金鑰存取您的內容,讓存取不致於中斷。

    2. 在 [Primary Key] \(主要金鑰\) 方塊中輸入唯一加密金鑰,並視需要在 [Backup Key] \(備份金鑰\) 方塊中輸入備份金鑰。

    3. 從每個金鑰的 [最低加密版本] 清單中選取其最低加密版本,然後選取 [更新]

      • V2:指出金鑰可用來產生 2.0 和 3.0 版權杖。 只有當您會將舊的 2.0 版加密金鑰轉換成 3.0 版金鑰,才使用此選項。
      • V3:(建議選項) 指出金鑰僅可用來產生 3.0 版權杖。
    4. 使用加密工具設定加密參數,並產生權杖。 使用加密工具時,您可以根據到期時間、國家/地區、訪客來源、通訊協定及用戶端 IP (任意組合) 來允許或拒絕要求。 雖然組成權杖的參數沒有任何數目和組合上的限制,但是權杖的總長度限制為 512 個字元。

      內容傳遞網路加密工具的螢幕快照。

      請在 [加密工具] 區段中,為下列一或多個加密參數輸入值:

      參數名稱 描述
      ec_expire 會為權杖指派一個到期時間,在此時間之後,權杖就會過期。 在到期時間之後提交的要求都會遭到拒絕。 此參數使用 Unix 時間戳記,是以自標準 Unix Epoch「1/1/1970 00:00:00 GMT」起算的秒數為依據。 (您可以使用線上工具在標準時間與 Unix 時間之間轉換)。

      例如,如果您想要讓權杖在 12/31/2016 12:00:00 GMT 到期,請輸入 Unix 時間戳記值 1483185600

      ec_url_allow 可讓您為特定資產或路徑量身打造權杖。 若要求的 URL 是以特定的相對路徑開頭,它會限制對該要求的存取。 URL 會區分大小寫。 請利用以逗號分隔每個路徑的方式來輸入多個路徑;請勿加上空格。 您可以視需求而定,設定不同的值來提供不同層級的存取。

      例如,就 URL http://www.mydomain.com/pictures/city/strasbourg.png 而言,會針對下列輸入值允許下列要求:

      • 輸入「/」值:允許所有要求。
      • 輸入「/pictures」值可允許下列要求:
        • 'http://www.mydomain.com/pictures.png'
        • 'http://www.mydomain.com/pictures/city/strasbourg.png'
        • 'http://www.mydomain.com/picturesnew/city/strasbourgh.png'
      • 輸入「/pictures/」值:只允許包含「/pictures/」路徑的要求。 例如「http://www.mydomain.com/pictures/city/strasbourg.png」。
      • 輸入「pictures/city/strasbourg.png」值:只允許此特定路徑和資產的要求。
      ec_country_allow 只允許來自一或多個指定國家/地區的要求。 來自其他所有國家/地區的要求將會遭到拒絕。 針對每個國家/地區使用兩個字母的 [ISO 3166 國家/地區代碼] (/previous-versions/azure/mt761717(v=azure.100)),並將每個國家/地區以逗號分隔;請勿加上空格。 例如,如果您只想允許來自美國和法國的存取,請輸入「US,FR」。
      ec_country_deny 拒絕來自一或多個指定國家/地區的要求。 將會允許來自其他所有國家/地區的要求。 實作與 ec_country_allow 參數相同。 如果 ec_country_allowec_country_deny 參數中同時出現國家/地區碼,ec_country_allow 參數具有高優先順序。
      ec_ref_allow 只允許來自指定訪客來源的要求。 訪客來源會識別連結到所要求之資源的網頁 URL。 請勿在參數值中包含通訊協定。

      以下是允許的輸入類型:

      • 主機名稱或主機名稱和路徑。
      • 多個訪客來源。 若要新增多個訪客來源,請以逗號分隔每個訪客來源;請勿加上空格。 如果您指定訪客來源值,但因瀏覽器設定而導致不會在要求中傳送訪客來源資訊,系統預設將會拒絕要求。
      • 具有遺漏或空白訪客來源資訊的要求。 根據預設,ec_ref_allow 參數會封鎖這些類型的要求。 若要允許這些要求,請輸入文字 "missing",或輸入空白值 (使用尾端逗號)。
      • 子網域。 若要允許子網域,請輸入星號 (\*)。 例如,若要允許「contoso.com」的所有子網域,請輸入「*.contoso.com」。

      例如,若要允許下列存取要求:來自 www.contoso.com 的要求、來自 contoso2.com 底下所有子網域的要求,以及訪客來源為空白或遺漏的要求,請輸入 www.contoso.com,*.contoso.com,missing

      ec_ref_deny 拒絕來自指定訪客來源的要求。 實作與 ec_ref_allow 參數相同。 如果 ec_ref_allowec_ref_deny 參數中同時出現訪客來源,ec_ref_allow 參數具有高優先順序。
      ec_proto_allow 只允許來自指定通訊協定的要求。 有效值為「http」、「https」或「http,https」。
      ec_proto_deny 拒絕來自指定通訊協定的要求。 實作與 ec_proto_allow 參數相同。 如果 ec_proto_allowec_proto_deny 參數中同時出現通訊協定,ec_proto_allow 參數具有高優先順序。
      ec_clientip 僅限指定要求者的 IP 位址才能存取。 支援因特網通訊協定第 4 版(IPv4)和因特網通訊協定第 6 版(IPv6)。 您可以指定單一要求 IP 位址或與指定子網路關聯的 IP 子位址。 例如,「11.22.33.0/22」可允許來自 IP 位址 11.22.32.1 到 11.22.35.254 的要求。
    5. 輸入完加密參數值之後,請從 [要加密的金鑰] 清單中選取要加密的金鑰 (如果您已建立主要金鑰和備份金鑰)。

    6. 從 [加密版本] 清單中選取加密版本:版本 2 請選 [V2],版本 3 請選 [V3] \(建議選項)。

    7. 選取 [加密] 來產生權杖。

      權杖產生之後,會在 [產生的權杖] 方塊中顯示。 若要使用此權杖,將它以查詢字串的形式,附加在 URL 路徑中檔案的結尾。 例如: http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b

    8. 視需要使用解密工具來測試您的權杖,使您能夠檢視權杖的參數。 將權杖值貼到 [Token to Decrypt] \(要解密的權杖\) 方塊中。 從 [要解密的金鑰] 清單中選取要使用的加密金鑰,然後選取 [解密]

      權杖被解密之後,其參數會顯示在 [原始參數] 方塊中。

    9. 視需要自訂要求遭拒時傳回的回應碼類型。 選取 [已啟用],然後從 [回應碼] 清單中選取回應碼。 [標頭名稱] 會自動設為 [位置]。 選取 [儲存] 來實作新的回應碼。 針對特定回應碼,您還必須在 [標頭值] 方塊中輸入您錯誤頁面的 URL。 預設選取的回應碼是 403 (禁止)。

  3. 在 [HTTP 大型] 底下,選取 [規則引擎]。 您需使用此規則引擎來定義路徑,以套用功能、啟用權杖驗證功能,以及啟用與權杖驗證相關的額外功能。 如需詳細資訊,請參閱規則引擎參考

    1. 選取現有規則或建立新規則,以定義您想要套用權杖驗證的資產或路徑。
    2. 若要在規則啟用權杖驗證,請從 功能 清單中選取 Token Auth 權杖驗證,然後選取 已啟用。 如果您要更新規則,請選取 [更新],或如果您要建立規則,請選取 [新增]
  4. 在規則引擎中,您還可以啟用更多與權杖驗證相關的功能。 若要啟用下列任何功能,請從 [功能] 清單中選取該功能,然後選取 [已啟用]

    • 令牌驗證拒絕碼 決定拒絕要求時傳回給使用者的回應類型。 這裡設定的規則會覆寫權杖型驗證頁面之 [Custom Denial Handling] \(自訂拒絕處理\) 區段中設定的回應碼。

    • 令牌驗證忽略 URL 大小寫: 判斷用來驗證令牌的 URL 是否區分大小寫。

    • 令牌驗證參數 重新命名出現在要求URL中的令牌驗證查詢字串參數。

  5. 您可以存取 GitHub.中的原始程式碼來自訂權杖。 可用的語言包括:

    • C
    • C#
    • PHP
    • Perl
    • Java
    • Python

Azure 內容傳遞網路 功能和提供者定價

如需功能的相關信息,請參閱 Azure 內容傳遞網路 產品功能。 如需價格的詳細資訊,請參閱內容傳遞網路的價格