リモート認証は、リソースを保護するために使用されるアクセス制御機能です。 リモート認証を設定して、Alibaba Cloud CDNのPOP (Point of presence) に送信されるユーザーリクエストを認証し、認証結果に基づいてリクエストを処理できます。 リモート認証を有効にすると、許可されたユーザーのみがリソースにアクセスできます。 このトピックでは、ApsaraVideo VODコンソールでリモート認証の仕組みとリモート認証を有効にする方法について説明します。 このトピックでは、関連するAPIリファレンスも提供します。
制御ポリシー機能の動作
ApsaraVideo VODは、URL署名とリモート認証をサポートしており、サイトリソースが違法にダウンロードまたは使用されるのを防ぎます。 次のセクションでは、URL署名とリモート認証の違いについて説明します。
URL署名: ドメイン名に対して作成された署名ルールをPOPに適用すると、POPは署名プロセスを完了します。 URL署名の詳細については、「URL署名の設定」をご参照ください。
リモート認証: 自己管理認証サーバーを指定できます。 POPがクライアント要求を受信すると、要求は指定された認証サーバーにリダイレクトされます。
リモート認証の仕組みを次の図に示します。
クライアントはCDN POPにリクエストを送信します。 要求は、認証に使用されるパラメータを搬送します。
POPはリクエストを認証サーバーにリダイレクトします。
認証サーバは、要求パラメータをチェックし、認証結果をPOPに返します。
POPは、認証サーバから返された認証結果に基づいてリクエストを処理します。 リクエストが認証に合格した場合、アクセスは許可されます。 要求が認証に失敗した場合、アクセスは拒否または制限されます。 例:
例1: リクエストは認証を渡します。 POPは、要求されたリソースをユーザに返します。
例2: リクエストが認証に失敗しました。 POPは、HTTPステータスコード404をユーザーに返します。
例3: リクエストが認証に失敗しました。 POPは、ユーザからの要求を抑制します。
例4: 認証がタイムアウトします。 POPは、許可アクションなどの指定されたアクションを実行します。
使用上の注意
リモート認証を有効にすると、認証サーバーは各リクエストをチェックします。 POPに送信されるリクエストの数が多いと推定される場合は、パフォーマンスを損なうことなく、認証サーバーがトラフィックの急増に対処できることを確認してください。
手順
ApsaraVideo VODコンソールにログインします。
左側のナビゲーションウィンドウで、[設定管理] をクリックします。
[CDN設定] > [ドメイン名] を選択します。 [ドメイン名] ページが表示されます。
設定するドメイン名を見つけて、[操作] 列の [設定] をクリックします。
表示されるページで、[リソースアクセス制御] をクリックします。
[リモート認証] タブをクリックします。
リモート認証をオンにし、リモート認証を設定します。
リモート認証のパラメーターを次の表に示します。
項目
説明
认证サーバーアドレス
认证サーバのアドレスを入力します。 アドレスはパブリックにアクセスできる必要があります。 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を含めることはできません。 それ以外の場合、サーバーアドレスは無効と見なされます。
リクエストメソッド
認証サーバーでサポートされているリクエスト方法を選択します。 有効な値: GET、HEAD、および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ステータスコードをユーザーに返します。
[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のコンテンツ。 |