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

CDN:リモート認証の設定

最終更新日:May 08, 2025

独自の認証サーバーがある場合は、リモート認証を設定して、ユーザーリクエストを認証のために認証サーバーに転送できます。

機能の概要

リモート認証は URL 署名に似ています。どちらも、リソースを不正アクセスから保護するために使用されます。承認されたユーザーのみが POP からリソースを取得できます。URL 署名とリモート認証の違い:

  • URL 署名:ドメイン名に対して作成された認証ルールを POP に適用すると、POP は認証プロセスを完了します。

  • リモート認証:自己管理型の認証サーバーを指定できます。POP がクライアントリクエストを受信すると、リクエストは指定された認証サーバーにリダイレクトされます。

次の図は、リモート認証の仕組みを示しています。远程鉴权交互图

番号

説明

1

クライアントが POP にリクエストを送信します。リクエストには、認証に使用されるパラメーターが含まれています。例:

  • 元のリクエスト URL:https://example.com/123/test.txt?key=xxxxxxxxxx

  • 元のリクエストのヘッダー:test=123

2

POP はリクエストを受信し、リクエストを認証サーバーにリダイレクトします。リクエストが認証サーバーにリダイレクトされる前に、POP によってリクエストが処理されるかどうかを指定できます。例:

  • 認証サーバーの URL:https://192.0.2.1/auth

  • Alibaba Cloud CDN コンソールのリモート認証機能の設定:すべてのリクエスト パラメータを保持するすべてのリクエストヘッダーを保持する と 。

  • CDN によって認証サーバーに転送されるリクエストの URL:https://192.0.2.1/auth?key=xxxxxxxxxx

  • CDN によって認証サーバーに転送されるリクエストのヘッダー:test=123

3

認証サーバーはリクエスト内のパラメーターをチェックし、認証結果を POP に返します。

4

POP は認証結果に基づいて対応するアクションを実行し、クライアントにデータを返します。

例:

  • 例 1:リクエストが認証に合格しました。POP はリクエストされたリソースをクライアントに返します。

  • 例 2:リクエストが認証に失敗しました。POP は HTTP 403 ステータスコードをクライアントに返します。

  • 例 3:リクエストが認証に失敗しました。POP はクライアントから送信されたリクエストをスロットルします。

  • 例 4:認証プロセスがタイムアウトしました。POP は、許可または拒否など、指定されたアクションを実行します。

使用上の注意

  • リモート認証を設定した後、認証に失敗したリクエストは引き続き POP に到達する可能性があります。ただし、POP はリクエストを拒否し、HTTP 403 ステータスコードを返します。リクエストは CDN ログに記録されます。

  • リモート認証では、ユーザーリクエストは指定された認証サーバーに転送され、認証サーバーはユーザーリクエストを検証します。悪意のあるリクエストを POP がブロックするときに生成されるデータ転送に対して課金されます。クライアントが HTTPS 経由でリソースをリクエストする場合、HTTPS リクエストに対しても課金されます。

手順

  1. Alibaba Cloud CDN コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. ドメイン名 ページで、管理するドメイン名を見つけ、管理 列の アクション をクリックします。

  4. ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。

  5. [リモート認証] タブをクリックします。

  6. [リモート認証] を有効にして、表示される指示に従ってパラメーターを構成します。

    説明

    リモート認証を有効にすると、すべてのユーザーリクエストは認証サーバーにリダイレクトされます。 POP に大量のリクエストが送信される場合は、パフォーマンスを損なうことなく認証サーバーがトラフィックの急増を処理できることを確認してください。

    パラメーター

    説明

    [認証サーバーアドレス]

    認証サーバーのアドレス。このアドレスは、パブリックにアクセスできる必要があります。 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 を含めることはできません。含めた場合、サーバーアドレスは無効と見なされます。

    [リクエストメソッド]

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

    [ファイルの種類]

    • すべて:認証サーバーはすべてのファイルの種類を確認します。

    • 指定:認証サーバーは、指定されたファイルの種類のみを確認します。

      • 1 つ以上のファイルの種類を指定できます。複数のファイルの種類は縦棒(|)で区切ります。例:mp4|flv。

      • ファイルの種類は大文字と小文字が区別されます。たとえば、.jpg と JPG は異なるファイルの種類と見なされます。

    [URL 署名パラメーター]

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

    認証サーバーに確認させたい URL パラメーター。有効な値:すべてのパラメーターを保持指定したパラメーターを保持すべての URL パラメーターを削除

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

    • パラメーターは大文字と小文字が区別されます。たとえば、key と KEY は異なるパラメーターと見なされます。

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

    リクエストが認証サーバーにリダイレクトされる前に、リクエストの URL に追加するパラメーター。キーと値のペアを指定するか、CDN によって提供される変数を選択できます。

    • キーと値のペアを指定する場合は、次のルールに注意してください。

      • キーと値のペアは縦棒(|)で区切ります。例:token=$arg_token|vendor=ali_cdn。

      • 値は大文字と小文字が区別されます。たとえば、key と KEY は異なる値と見なされます。

    • プリセット変数を使用する場合、変数の値は、リクエストが認証サーバーにリダイレクトされる前に、POP に送信されるリクエストに追加されます。

      たとえば、$http_host 変数を選択すると、リクエストが認証サーバーにリダイレクトされる前に、host=$http_host がリクエストの URL に追加されます。この例では、host は Host リクエストヘッダーの値です。変数の詳細については、「変数」をご参照ください。

    [リクエストヘッダーに保持するパラメーター]

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

    認証サーバーに確認させたいリクエストヘッダー。有効な値:すべてのリクエストヘッダーを保持指定したリクエストヘッダーを保持すべてのリクエストヘッダーを削除

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

    • リクエストヘッダーは大文字と小文字が区別されません。たとえば、http_remote_addr と HTTP_Remote_Addr は同じリクエストヘッダーと見なされます。

    説明

    [すべてのリクエストヘッダーを保持]を選択した場合、POP はリクエストから Host ヘッダーを削除します。リクエストに Host ヘッダーを保持する場合は、[指定したリクエストヘッダーを保持]を選択するか、[カスタムパラメーター]を設定できます。認証サーバーにリダイレクトされるリクエストの Host ヘッダーは、高速化ドメイン名を指定します。そのため、POP はリクエストから Host ヘッダーを自動的に削除します。削除しない場合、認証サーバーはこれらのリクエストを識別できず、認証エラーを示す HTTP 404 ステータスコードなどのエラーを返す可能性があります。

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

    リクエストが認証サーバーにリダイレクトされる前に、リクエストヘッダーに追加するパラメーター。キーと値のペアを指定するか、CDN によって提供される変数を選択できます。

    • キーと値のペアを指定する場合は、次のルールに注意してください。

      • 複数のリクエストヘッダーは縦棒(|)で区切ります。例:User-Agent=$http_user_agent|vendor=ali_cdn。

      • リクエストヘッダーは大文字と小文字が区別されません。たとえば、http_remote_addr と HTTP_Remote_Addr は同じリクエストヘッダーと見なされます。

    • プリセット変数を使用する場合、変数の値は、リクエストが認証サーバーにリダイレクトされる前に、POP に送信されるリクエストに追加されます。

      たとえば、$http_host 変数を選択すると、リクエストが認証サーバーにリダイレクトされる前に、host=$http_host がリクエストの URL に追加されます。この例では、host は Host リクエストヘッダーの値です。変数の詳細については、「変数」をご参照ください。

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

    [認証に合格]

    説明

    このパラメーターは、リクエストが認証に合格した場合に認証サーバーによって返される HTTP ステータスコードを指定します。複数のステータスコードを指定できます。複数のステータスコードはコンマ(,)で区切ります。

    このパラメーターを 200,206 に設定すると、認証サーバーは、認証に合格したクライアントリクエストに対して HTTP ステータスコード 200 または 206 を POP に返します。

    例外処理

    認証サーバーによって返される HTTP ステータスコードが、リクエストが認証に合格したか失敗したかを示していない場合、POP はリクエストを許可します。これにより、例外によってリクエストがブロックされることがなくなります。

    [認証に失敗]

    説明

    このパラメーターは、リクエストが認証に失敗した場合に認証サーバーによって返される HTTP ステータスコードを指定します。複数のステータスコードを指定できます。複数のステータスコードはコンマ(,)で区切ります。

    HTTP ステータスコードを 400,403 に設定すると、認証サーバーは、認証に失敗したクライアントリクエストに対して HTTP ステータスコード 400 または 403 を POP に返します。

    例外処理

    認証サーバーによって返される HTTP ステータスコードが、リクエストが認証に合格したか失敗したかを示していない場合、POP はリクエストを許可します。これにより、例外によってリクエストがブロックされることがなくなります。

    [他のステータスコードを許可]

    • はい:認証サーバーによって返される HTTP ステータスコードが、リクエストが認証に合格したか失敗したかを示していない場合、POP はリクエストを許可します。これにより、例外によってリクエストがブロックされることがなくなります。

      説明

      例:

      • 認証に合格したリクエストに指定された HTTP ステータスコードが 200 であるにもかかわらず、認証サーバーがリクエストに対して HTTP 201 ステータスコードを返す場合、POP はリクエストを許可します。

      • 認証に失敗したリクエストに指定された HTTP ステータスコードが 403 であるにもかかわらず、認証サーバーがリクエストに対して HTTP 404 ステータスコードを返す場合、POP はリクエストを許可します。

    • いいえ:認証サーバーによって返される HTTP ステータスコードが、リクエストが認証に合格したか失敗したかを示していない場合、POP はリクエストを拒否します。

    [認証失敗時のレスポンス]

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

    POP が認証サーバーからリクエストが認証に失敗したことを示す HTTP ステータスコードを受信した後、POP からクライアントに返される HTTP ステータスコード。

    [カスタム HTTP ステータスコード]を 403 に設定すると、POP は認証に失敗したリクエストに対してユーザーに HTTP 403 ステータスコードを返します。

    [認証タイムアウト設定]

    [タイムアウト]

    タイムアウト期間は、POP がリクエストを認証サーバーにリダイレクトしたときに開始されます。タイムアウト期間は、POP が認証サーバーから認証結果を受信したときに終了します。タイムアウト期間はミリ秒単位で測定されます。タイムアウト期間は最大 3,000 ミリ秒まで設定できます。

    [タイムアウト後の操作]

    リクエストの認証がタイムアウトした場合に、POP にリクエストに対して実行させたい操作。有効な値:許可拒否

    • 許可:リクエストの認証がタイムアウトした場合、POP はリクエストを許可します。

    • 拒否:リクエストの認証がタイムアウトした場合、POP はリクエストを拒否し、[カスタム HTTP ステータスコード] で指定された HTTP ステータスコードをクライアントに返します。

  7. 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

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

$request_method

リクエストメソッド。

$request_uri

uri+'?'+args の内容。

FAQ

関連 API 操作

BatchSetCdnDomainConfig