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

:リモート認証

最終更新日:Oct 23, 2024

リモート認証は、リソースを保護するために使用されるアクセス制御機能です。 リモート認証を設定して、Alibaba Cloud CDNのPOP (Point of presence) に送信されるユーザーリクエストを認証し、認証結果に基づいてリクエストを処理できます。 リモート認証を有効にすると、許可されたユーザーのみがリソースにアクセスできます。 このトピックでは、ApsaraVideo VODコンソールでリモート認証の仕組みとリモート認証を有効にする方法について説明します。 このトピックでは、関連するAPIリファレンスも提供します。

制御ポリシー機能の動作

ApsaraVideo VODは、URL署名とリモート認証をサポートしており、サイトリソースが違法にダウンロードまたは使用されるのを防ぎます。 次のセクションでは、URL署名とリモート認証の違いについて説明します。

  • URL署名: ドメイン名に対して作成された署名ルールをPOPに適用すると、POPは署名プロセスを完了します。 URL署名の詳細については、「URL署名の設定」をご参照ください。

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

リモート認証の仕組みを次の図に示します。 Schematic diagram of remote authentication

  1. クライアントはCDN POPにリクエストを送信します。 要求は、認証に使用されるパラメータを搬送します。

  2. POPはリクエストを認証サーバーにリダイレクトします。

  3. 認証サーバは、要求パラメータをチェックし、認証結果をPOPに返します。

  4. POPは、認証サーバから返された認証結果に基づいてリクエストを処理します。 リクエストが認証に合格した場合、アクセスは許可されます。 要求が認証に失敗した場合、アクセスは拒否または制限されます。 例:

    • 例1: リクエストは認証を渡します。 POPは、要求されたリソースをユーザに返します。

    • 例2: リクエストが認証に失敗しました。 POPは、HTTPステータスコード404をユーザーに返します。

    • 例3: リクエストが認証に失敗しました。 POPは、ユーザからの要求を抑制します。

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

使用上の注意

リモート認証を有効にすると、認証サーバーは各リクエストをチェックします。 POPに送信されるリクエストの数が多いと推定される場合は、パフォーマンスを損なうことなく、認証サーバーがトラフィックの急増に対処できることを確認してください。

手順

  1. ApsaraVideo VODコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[設定管理] をクリックします。

  3. [CDN設定] > [ドメイン名] を選択します。 [ドメイン名] ページが表示されます。

  4. 設定するドメイン名を見つけて、[操作] 列の [設定] をクリックします。

  5. 表示されるページで、[リソースアクセス制御] をクリックします。

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

  7. リモート認証をオンにし、リモート認証を設定します。2021-12-27_15-00-00

    2021-12-30_11-11-03リモート認証のパラメーターを次の表に示します。

    項目

    説明

    认证サーバーアドレス

    认证サーバのアドレスを入力します。 アドレスはパブリックにアクセスできる必要があります。 Alibaba Cloud CDNは、指定されたサーバーアドレスとアドレスの形式を確認します。

    • サポートされている形式

      サーバーアドレスは、次のいずれかの形式である必要があります。

      • 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を含めることはできません。 それ以外の場合、サーバーアドレスは無効と見なされます。

    リクエストメソッド

    認証サーバーでサポートされているリクエスト方法を選択します。 有効な値: GETHEAD、およびPOST

    • POST

      • パラメータはリクエストボディで送信され、アドレスバーは変更されません。

      • データ伝送のサイズは無制限です。

      • リクエストはブラウザ履歴にキャッシュまたは保存されません。

      • セキュリティは高いです。

    • GET

      • パラメータはリクエストラインで送信され、アドレスバーにパラメータの値が表示されます。

      • ブラウザの制限により、リクエストに対して最大1,024バイトを送信できます。

      • リクエストはキャッシュされ、ブラウザ履歴に保存されます。

      • セキュリティは低いです。

    • ヘッド

      HEADメソッドはGETメソッドに似ています。 ただし、HEADメソッドを呼び出した後、サーバーはリクエスト本文を返しません。

    ファイルの種類

    • すべて: 認証サーバーはすべてのファイルタイプをチェックします。

    • 指定済み: 認証サーバーは、指定したファイルタイプのみをチェックします。

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

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

    保持するパラメーター

    认证サーバで确认するURLパラメーターを指定します。 有効な値: すべてのURLパラメーターを保持指定されたURLパラメーターを保持すべてのURLパラメーターを削除

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

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

    カスタムパラメータの追加

    リクエストが認証サーバーにリダイレクトされる前に、リクエストのURLにカスタムパラメーターを追加します。

    ApsaraVideo VODコンソールで、[カスタマイズ] を選択してキーと値のペアを指定するか、[選択] を選択してプリセット変数を使用することができます。

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

      • 値は縦棒 (|) で区切ります。 例: token=$arg_token | vendor=ali_cdn

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

    • プリセット変数を使用する場合、選択した変数の値は、リクエストが認証サーバーにリダイレクトされる前にクライアント要求に追加されます。

      たとえば、$http_host変数を選択した場合、リクエストが認証サーバーにリダイレクトされる前に、host=$http_hostがリクエストのURLに追加されます。 hostは、Hostヘッダーフィールドの値を示します。 変数の詳細については、このトピックの変数セクションを参照してください。

    保持するヘッダーを要求する

    認証サーバで確認するリクエストヘッダーを指定します。 有効な値は、[すべてのリクエストヘッダーを保持][指定したリクエストヘッダーを保持][すべてのリクエストヘッダーを削除] です。

    • 複数のリクエストヘッダーを指定する場合は、リクエストヘッダーを縦棒 (|) で区切ります。 例: user_agent | リファラー | クッキー

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

    説明

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

    カスタムパラメータの追加

    リクエストが認証サーバーにリダイレクトされる前に、POPに送信されるリクエストにカスタムリクエストヘッダーを追加します。

    ApsaraVideo VODコンソールで、[カスタマイズ] を選択してキーと値のペアを指定するか、[選択] を選択してプリセット変数を使用することができます。

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

      • 複数のリクエストヘッダーは縦棒 (|) で区切ります。 例: 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ステータスコードを2XXに設定することを推奨します。

    HTTPステータスコードを200に設定した場合、認証サーバーは、認証に合格したクライアント要求のHTTPステータスコード200をCDN POPに返します。 認証サーバーが、リクエストが認証に合格するか失敗するかを示さないHTTPステータスコードを返した場合、認証はタイムアウトします。

    失敗した認証

    リクエストが認証に失敗した場合に認証サーバーから返されるHTTPステータスコードを指定します。 失敗した認証のHTTPステータスコードを4XXに設定することを推奨します。

    HTTPステータスコードを403に設定した場合、認証サーバーは、認証に失敗したクライアント要求のHTTPステータスコード403をCDN POPに返します。 認証サーバーが、リクエストが認証に合格したか失敗したかを示すHTTPステータスコードを返した場合、認証はタイムアウトします。

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

    POPが認証サーバから認証に失敗したことを示すHTTPステータスコードを受信した後に、POPからユーザに返されるHTTPステータスコードを指定します。

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

    タイムアウト

    タイムアウト期間は、POPが認証サーバーにリクエストをリダイレクトするときに開始されます。 POPが認証サーバから認証結果を受信すると、タイムアウト期間が終了します。

    単位:ミリ秒。 最大値: 3000。

    Action

    認証がタイムアウトした場合にPOPがリクエストに対して実行するアクションを指定します。 有効な値:

    • 許可: POPは、要求されたリソースをユーザーに返します。

    • 拒否: POPはリクエストを拒否し、[カスタムHTTPステータスコード] フィールドで指定したHTTPステータスコードをユーザーに返します。

  8. [OK] をクリックします。

    リモート認証を有効にした後、[リモート認証] タブでリモート認証の設定を変更したり、リモート認証を無効にしたりできます。

変数

カスタムパラメーターを追加する場合、ApsaraVideo VODで提供されるプリセット変数を選択できます。 次の表に変数を示します。

変数

説明

$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アドレス。

$スキーム

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

$server_protocol

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

$uri

リクエストの元のURI。

$args

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

$request_method

リクエスト方式。

$request_uri

uri + '?' + argsのコンテンツ。

関連する API 操作

BatchSetVodDomainConfigs