独自の認証サーバーがある場合は、リモート認証を設定して、ユーザーリクエストを認証のために認証サーバーに転送できます。
機能の概要
リモート認証は URL 署名に似ています。どちらも、リソースを不正アクセスから保護するために使用されます。承認されたユーザーのみが POP からリソースを取得できます。URL 署名とリモート認証の違い:
URL 署名:ドメイン名に対して作成された認証ルールを POP に適用すると、POP は認証プロセスを完了します。
リモート認証:自己管理型の認証サーバーを指定できます。POP がクライアントリクエストを受信すると、リクエストは指定された認証サーバーにリダイレクトされます。
次の図は、リモート認証の仕組みを示しています。
番号 | 説明 |
1 | クライアントが POP にリクエストを送信します。リクエストには、認証に使用されるパラメーターが含まれています。例:
|
2 | POP はリクエストを受信し、リクエストを認証サーバーにリダイレクトします。リクエストが認証サーバーにリダイレクトされる前に、POP によってリクエストが処理されるかどうかを指定できます。例:
|
3 | 認証サーバーはリクエスト内のパラメーターをチェックし、認証結果を POP に返します。 |
4 | POP は認証結果に基づいて対応するアクションを実行し、クライアントにデータを返します。 例:
|
使用上の注意
リモート認証を設定した後、認証に失敗したリクエストは引き続き POP に到達する可能性があります。ただし、POP はリクエストを拒否し、HTTP 403 ステータスコードを返します。リクエストは CDN ログに記録されます。
リモート認証では、ユーザーリクエストは指定された認証サーバーに転送され、認証サーバーはユーザーリクエストを検証します。悪意のあるリクエストを POP がブロックするときに生成されるデータ転送に対して課金されます。クライアントが HTTPS 経由でリソースをリクエストする場合、HTTPS リクエストに対しても課金されます。
手順
Alibaba Cloud CDN コンソール にログオンします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけ、管理 列の アクション をクリックします。
ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。
[リモート認証] タブをクリックします。
[リモート認証] を有効にして、表示される指示に従ってパラメーターを構成します。
説明リモート認証を有効にすると、すべてのユーザーリクエストは認証サーバーにリダイレクトされます。 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 を含めることはできません。含めた場合、サーバーアドレスは無効と見なされます。
[リクエストメソッド]
認証サーバーでサポートされているリクエストメソッド。有効な値:GET、HEAD、POST。デフォルト値: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 ステータスコードをクライアントに返します。
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 の内容。 |