リモート認証は、ユーザーリクエストを指定した認証サーバーに転送し、その認証サーバーがリクエストを検証します。POP ではなく、独自の認証サーバーでリクエストを認可するかどうかを判断する必要がある場合は、高速化ドメイン名のリモート認証を設定します。
仕組み
リモート認証と URL 署名は同じ目的を果たします。どちらもリソースを保護し、承認されたユーザーのみがアクセスできるようにします。2 つの機能は、実装方法が異なります。
URL 署名 — ドメイン名の署名ルールを CDN POP に配布し、CDN POP がデータ交換と認証プロセス全体を完了します。
リモート認証:お客様は独自の認証サーバーを運用します。CDN POP はユーザーリクエストを受信すると、認証のため、そのリクエストを認証サーバーに転送します。
URL 署名は、CDN POP が認証ルールを独自に適用できる場合に使用します。 リモート認証は、独自の認証サーバーが各リクエストに対して判断を下す必要がある場合に使用します。
リモート認証のデータ交換プロセスは次のとおりです。
番号 | やり取りの説明 |
① | ユーザーが開始したリソースアクセスリクエストが CDN POP に到達すると、そのリクエストには認証パラメーターが含まれています。たとえば、元のリクエスト URL は |
② | CDN の POP はユーザーリクエストを受信し、直接、または指定されたルールに基づいて処理した後に認証サーバーに転送します。 たとえば、認証サーバーのアドレスが |
③ | 認証サーバーは、ユーザーリクエストに含まれる認証パラメーターに基づいて、CDN POP に認証結果を返します。 |
④ | CDN POP は、認証サーバーから返された認証結果に基づいて対応するアクションを実行し、ユーザーに対応するデータを返します。 認証結果の例を次に示します。
|
注意事項
ログ記録 — リモート認証を設定すると、認証に失敗したリクエストは CDN POP に到達しますが、CDN POP はリクエストを拒否し、[カスタム HTTP ステータスコード] で指定した 403 などの HTTP ステータスコードを返します。 クライアントリクエストの記録は、引き続き CDN ログに書き込まれます。
課金 — リモート認証では、ユーザーリクエストがお客様の指定する認証サーバーに転送されるため、CDN POP が悪意のあるリクエストをブロックした場合でも、トラフィック料金が課金されます。悪意のあるリクエストをブロックすると、CDN POP の処理リソースが消費されます。クライアントが HTTPS を使用する場合、HTTPS リクエストに対しても課金されます。
前提条件
デプロイおよび管理する認証サーバーが、外部からアクセス可能なアドレスで利用可能であること。
手順
Alibaba Cloud CDN コンソールにログインします。
左側のナビゲーションペインで [ドメイン名 ] をクリックします。
[ドメイン名] ページで、管理対象のドメイン名を見つけ、[アクション] 列の [管理] をクリックします。

ドメイン名の左側のナビゲーションウィンドウで、[リソースアクセス制御] をクリックします。
リモート認証 タブをクリックします。
リモート認証 スイッチをオンにし、ページの指示に従ってリモート認証設定を構成します。
説明リモート認証を有効にすると、すべてのユーザーリクエストが処理のために認証サーバーに転送されます。リクエスト量が多い場合は、認証サーバーの負荷とパフォーマンスを考慮してください。
パラメーター
説明
[認証サーバーアドレス]
認証サーバーに外部からアクセスできるアドレスです。入力された認証サーバーのアドレスは、フォーマット検証や値検証など、システムによって検証されます。
フォーマット要件:
認証アドレスは 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 からアクセス可能である必要があります。
[リクエストメソッド]
認証サーバーがサポートするリクエストメソッド。有効な値: GET、HEAD、POST。デフォルト値: GET。
[ファイルタイプ]
[すべて]:すべてのファイルタイプが認証されます。
[指定済み]:指定されたファイルタイプのみが認証されます。
ファイルタイプを指定する場合、複数のファイルタイプを縦線 (|) で区切ります。例:
mp4|flv。ファイルタイプでは大文字と小文字が区別されます。
.jpgとJPGは 2 つの異なるファイルタイプです。
認証に使用する URL パラメーター
[保持するパラメーター]
ユーザーリクエスト URL のどのパラメーターを認証に使用するかを設定します。すべてのパラメーターを保持、指定されたパラメーターを保持、または すべての URL パラメーターを削除 を選択できます。
指定されたパラメーターを保持する場合、複数のパラメーターを縦線 (|) で区切ります。例:
user|token。パラメーターでは大文字と小文字が区別されます。
keyとKEYは 2 つの異なるパラメーターです。
[カスタムパラメーター]
CDN POP が認証サーバーに転送するリクエスト URL に、カスタムパラメーターを追加します。パラメーターとその値を定義するか、CDN コンソールでプリセットされた変数を使用できます。
パラメーターとその値を定義する場合、次の要件が適用されます。
複数のパラメーターは、たとえば
token=$arg_token|vendor=ali_cdnのように、縦線で区切ります。パラメーター値では大文字と小文字が区別されます。つまり、
keyとKEYは 2 つの異なるパラメーター値です。
プリセット変数を使用すると、変数の値を抽出し、CDN が認証サーバーに転送するリクエストに追加できます。
たとえば、変数
$http_hostを選択すると、host=$http_hostがユーザーリクエストの URL に追加されます。ここで、host はユーザーリクエストヘッダーのホスト値を示します。変数名とその意味については、「変数」をご参照ください。
認証に使用するリクエストヘッダー
[保持するリクエストヘッダー]
ユーザーリクエストのどのリクエストヘッダーを認証に使用するかを設定します。すべてのパラメーターを保持 または 指定されたパラメーターを保持 を選択できます。
指定されたリクエストヘッダーを保持する場合、複数のリクエストヘッダーを縦線 (|) で区切ります。例:
user_agent|referer|cookies。リクエストヘッダーでは大文字と小文字が区別されません。つまり、
http_remote_addrとHTTP_Remote_Addrは同じです。
説明[すべてのパラメーターを保持] を選択すると、CDN POP はデフォルトで HOST ヘッダーを削除します。CDN POP が認証サーバーに転送する認証リクエストに含まれる HOST ヘッダーはアクセラレーションドメイン名であるため、認証サーバーがその認証リクエストを認識できず、404 ステータスコードが返されて認証が失敗する可能性があります。HOST ヘッダーを保持するには、[指定されたパラメーターを保持] または [カスタムパラメーター] を使用します。
[カスタムパラメーター]
CDN POP が認証サーバーに転送するリクエストヘッダーに、カスタムパラメーターを追加します。 パラメーターとその値を定義するか、または CDN コンソールでプリセットされた変数を使用できます。
パラメーターとその値を定義する場合、次の要件が適用されます。
複数のリクエストヘッダーは、たとえば
User-Agent=$http_user_agent|vendor=ali_cdnのように、縦線で区切ります。リクエストヘッダーでは大文字と小文字が区別されません。つまり、
http_remote_addrとHTTP_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 returns200or206. 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 ステータスコードをユーザーに返します。
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 の内容。 |