すべてのプロダクト
Search
ドキュメントセンター

CDN:リモート認証の設定

最終更新日:Aug 25, 2026

リモート認証は、ユーザーリクエストを指定した認証サーバーに転送し、その認証サーバーがリクエストを検証します。POP ではなく、独自の認証サーバーでリクエストを認可するかどうかを判断する必要がある場合は、高速化ドメイン名のリモート認証を設定します。

仕組み

リモート認証と URL 署名は同じ目的を果たします。どちらもリソースを保護し、承認されたユーザーのみがアクセスできるようにします。2 つの機能は、実装方法が異なります。

  • URL 署名 — ドメイン名の署名ルールを CDN POP に配布し、CDN POP がデータ交換と認証プロセス全体を完了します。

  • リモート認証:お客様は独自の認証サーバーを運用します。CDN POP はユーザーリクエストを受信すると、認証のため、そのリクエストを認証サーバーに転送します。

URL 署名は、CDN POP が認証ルールを独自に適用できる場合に使用します。 リモート認証は、独自の認証サーバーが各リクエストに対して判断を下す必要がある場合に使用します。

リモート認証のデータ交換プロセスは次のとおりです。Interaction diagram for remote authentication

番号

やり取りの説明

ユーザーが開始したリソースアクセスリクエストが CDN POP に到達すると、そのリクエストには認証パラメーターが含まれています。たとえば、元のリクエスト URL は https://example.com/123/test.txt?key=xxxxxxxxxx で、元のリクエストにはヘッダー test=123 が含まれています。

CDN の POP はユーザーリクエストを受信し、直接、または指定されたルールに基づいて処理した後に認証サーバーに転送します。 たとえば、認証サーバーのアドレスが https://192.0.2.1/auth であり、CDN コンソールでのリモート認証が、すべてのリクエストパラメーターとすべてのリクエストヘッダーを保持するように設定されているとします。 この場合、CDN が認証サーバーに転送するリクエスト URL は https://192.0.2.1/auth?key=xxxxxxxxxx となり、CDN が認証サーバーに転送するリクエストにはヘッダー test=123 が含まれます。

認証サーバーは、ユーザーリクエストに含まれる認証パラメーターに基づいて、CDN POP に認証結果を返します。

CDN POP は、認証サーバーから返された認証結果に基づいて対応するアクションを実行し、ユーザーに対応するデータを返します。

認証結果の例を次に示します。

  • 例 1: 認証が成功します。CDN POP とユーザーは、通常のキャッシュデータのやり取りを開始します。

  • 例 2: 認証が失敗します。 CDN POP は、認証失敗に対して設定した 403 などのステータスコードをユーザーに返します。

  • 例 3: 認証に失敗します。CDN POP がユーザーアクセスをスロットリングします。

  • 例 4: 認証がタイムアウトします。 CDN POP は、認証タイムアウトに対して設定した、[パス] または [拒否] のいずれかのアクションを適用します。

注意事項

  • ログ記録 — リモート認証を設定すると、認証に失敗したリクエストは CDN POP に到達しますが、CDN POP はリクエストを拒否し、[カスタム HTTP ステータスコード] で指定した 403 などの HTTP ステータスコードを返します。 クライアントリクエストの記録は、引き続き CDN ログに書き込まれます。

  • 課金 — リモート認証では、ユーザーリクエストがお客様の指定する認証サーバーに転送されるため、CDN POP が悪意のあるリクエストをブロックした場合でも、トラフィック料金が課金されます。悪意のあるリクエストをブロックすると、CDN POP の処理リソースが消費されます。クライアントが HTTPS を使用する場合、HTTPS リクエストに対しても課金されます。

前提条件

  • デプロイおよび管理する認証サーバーが、外部からアクセス可能なアドレスで利用可能であること。

手順

  1. Alibaba Cloud 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 を含めることはできません。POP が認証リクエストを開始するため、アドレスは POP からアクセス可能である必要があります。

      [リクエストメソッド]

      認証サーバーがサポートするリクエストメソッド。有効な値: GETHEADPOST。デフォルト値: GET

      [ファイルタイプ]

      • [すべて]:すべてのファイルタイプが認証されます。

      • [指定済み]:指定されたファイルタイプのみが認証されます。

        • ファイルタイプを指定する場合、複数のファイルタイプを縦線 (|) で区切ります。例: mp4|flv

        • ファイルタイプでは大文字と小文字が区別されます。 .jpgJPG は 2 つの異なるファイルタイプです。

      認証に使用する URL パラメーター

      [保持するパラメーター]

      ユーザーリクエスト URL のどのパラメーターを認証に使用するかを設定します。すべてのパラメーターを保持指定されたパラメーターを保持、または すべての URL パラメーターを削除 を選択できます。

      • 指定されたパラメーターを保持する場合、複数のパラメーターを縦線 (|) で区切ります。例: user|token

      • パラメーターでは大文字と小文字が区別されます。 keyKEY は 2 つの異なるパラメーターです。

      [カスタムパラメーター]

      CDN POP が認証サーバーに転送するリクエスト URL に、カスタムパラメーターを追加します。パラメーターとその値を定義するか、CDN コンソールでプリセットされた変数を使用できます。

      • パラメーターとその値を定義する場合、次の要件が適用されます。

        • 複数のパラメーターは、たとえば token=$arg_token|vendor=ali_cdn のように、縦線で区切ります。

        • パラメーター値では大文字と小文字が区別されます。つまり、keyKEY は 2 つの異なるパラメーター値です。

      • プリセット変数を使用すると、変数の値を抽出し、CDN が認証サーバーに転送するリクエストに追加できます。

        たとえば、変数 $http_host を選択すると、host=$http_host がユーザーリクエストの URL に追加されます。ここで、host はユーザーリクエストヘッダーのホスト値を示します。変数名とその意味については、「変数」をご参照ください。

      認証に使用するリクエストヘッダー

      [保持するリクエストヘッダー]

      ユーザーリクエストのどのリクエストヘッダーを認証に使用するかを設定します。すべてのパラメーターを保持 または 指定されたパラメーターを保持 を選択できます。

      • 指定されたリクエストヘッダーを保持する場合、複数のリクエストヘッダーを縦線 (|) で区切ります。例: user_agent|referer|cookies

      • リクエストヘッダーでは大文字と小文字が区別されません。つまり、http_remote_addrHTTP_Remote_Addr は同じです。

      説明

      [すべてのパラメーターを保持] を選択すると、CDN POP はデフォルトで HOST ヘッダーを削除します。CDN POP が認証サーバーに転送する認証リクエストに含まれる HOST ヘッダーはアクセラレーションドメイン名であるため、認証サーバーがその認証リクエストを認識できず、404 ステータスコードが返されて認証が失敗する可能性があります。HOST ヘッダーを保持するには、[指定されたパラメーターを保持] または [カスタムパラメーター] を使用します。

      [カスタムパラメーター]

      CDN POP が認証サーバーに転送するリクエストヘッダーに、カスタムパラメーターを追加します。 パラメーターとその値を定義するか、または CDN コンソールでプリセットされた変数を使用できます。

      • パラメーターとその値を定義する場合、次の要件が適用されます。

        • 複数のリクエストヘッダーは、たとえば User-Agent=$http_user_agent|vendor=ali_cdn のように、縦線で区切ります。

        • リクエストヘッダーでは大文字と小文字が区別されません。つまり、http_remote_addrHTTP_Remote_Addr は同じです。

      • プリセット変数を使用すると、変数の値を抽出し、CDN が認証サーバーに転送するリクエストに追加できます。

        たとえば、変数 $http_host を選択すると、host=$http_host がユーザーリクエストの URL に追加されます。ここで、host はユーザーリクエストヘッダーのホスト値を示します。変数名とその意味については、「変数」をご参照ください。

      [返す HTTP ステータスコード]

      [認証完了]

      The HTTP status codes that the authentication server returns to CDN when authentication succeeds. You can configure multiple status codes and separate them with commas (,). Example: If you set the authentication success status code to 200,206, authentication is successful when the authentication server returns 200 or 206. For status codes that are neither success status codes nor failure status codes, see Whether to allow other status codes in this table.

      [認証失敗]

      認証が失敗したときに認証サーバーが CDN に返す HTTP ステータスコードです。 複数のステータスコードを設定し、コンマ (,) で区切ることができます。 : 認証失敗ステータスコードを 400,403 に設定した場合、認証サーバーが 400 または 403 を返すと認証は失敗します。 成功ステータスコードでも失敗ステータスコードでもないステータスコードについては、この表の [その他のステータスコードを許可するかどうか] をご参照ください。

      他のステータスコードを許可するかどうか

      認証サーバーから返されたステータスコードが、成功ステータスコードでも失敗ステータスコードでもない場合に、CDN POP がユーザーリクエストをどのように処理するかを決定します。 はい: 例外によってすべてのユーザーリクエストがブロックされるのを防ぐため、CDN POP はユーザーリクエストを許可します。 たとえば、認証成功ステータスコードが 200 に設定されていて、認証サーバーが 201 を返した場合、ユーザーリクエストは許可されます。 認証失敗ステータスコードが 403 に設定されていて、認証サーバーが 404 を返した場合、ユーザーリクエストは許可されます。 いいえ: CDN POP はユーザーリクエストを拒否します。

      認証に失敗した場合に CDN が実行するアクション

      [カスタム HTTP ステータスコード]

      ユーザーリクエストの認証に失敗したときに、CDN POP がユーザーに返すステータスコードです。

      たとえば、カスタムレスポンスステータスコードを 403 に設定し、ユーザーリクエストの認証が失敗した場合、CDN POP はユーザーに 403 を返します。

      認証タイムアウト設定

      [タイムアウト]

      CDN POP が認証リクエストを開始してから、CDN POP が認証サーバーから返された結果を受信するまでの期間です。 単位: ミリ秒。 最大値: 3000。

      [タイムアウト後の対応]

      CDN が、CDN と認証サーバー間のデータ交換がタイムアウトした後にユーザーリクエストを処理する方法。 [許可] または [拒否] を選択できます。

      • パス: 認証がタイムアウトした場合、CDN はユーザーリクエストを許可します。

      • 拒否: 認証がタイムアウトした場合、CDN はユーザーリクエストを拒否し、設定したカスタム HTTP ステータスコードをユーザーに返します。

  6. OK をクリックして設定を完了します。

    リモート認証機能の設定が正常に完了したら、リモート認証 タブで現在の設定を変更したり、リモート認証を無効にしたりできます。リモート認証を無効にすると、ユーザーリクエストの認証サーバーへの転送が停止します。

変数

カスタムパラメーターを追加する場合、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

リクエストのクライアント IP 情報。

$scheme

リクエストのプロトコルタイプ。

$server_protocol

リクエストのプロトコルバージョン。

$uri

リクエストの元の URI。

$args

リクエストのクエリ文字列 (疑問符 (?) は含みません)。

$request_method

リクエストメソッド。

$request_uri

uri+'?'+args の内容。

よくある質問

関連 API

BatchSetCdnDomainConfig