独自の認証サーバーがある場合は、認証のためにユーザーリクエストを認証サーバーに転送するようにリモート認証を設定できます。
機能の概要
リモート認証はURL署名に似ています。 どちらもリソースを不正アクセスから保護するために使用されます。 POPからリソースを取得できるのは、許可されたユーザーのみです。 URL署名とリモート認証の違い:
URL署名: ドメイン名に対して作成された認証ルールをPOPに適用すると、POPは認証プロセスを完了します。
リモート認証: 自己管理認証サーバーを指定できます。 POPがクライアント要求を受信すると、要求は指定された認証サーバーにリダイレクトされます。
リモート認証の仕組みを次の図に示します。
いいえ | 説明 |
1 | クライアントはPOPにリクエストを送信します。 要求は、認証に使用されるパラメータを搬送する。 例:
|
2 | POPはリクエストを受信し、リクエストを認証サーバーにリダイレクトします。 リクエストが認証サーバーにリダイレクトされる前に、リクエストがPOPによって処理されるかどうかを指定できます。 例:
|
3 | 認証サーバーはリクエスト内のパラメーターを確認し、認証結果をPOPに返します。 |
4 | POPは、認証結果に基づいて対応するアクションを実行し、データをクライアントに返します。 例:
|
手順
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。
[リモート認証] タブをクリックします。
[リモート認証] をオンにし、プロンプトに従ってパラメーターを設定します。
説明リモート認証を有効にすると、すべてのユーザーリクエストが認証サーバーにリダイレクトされます。 大量のリクエストがPOPに送信される場合は、パフォーマンスを損なうことなく、認証サーバーがトラフィックの急増を処理できることを確認してください。
パラメーター
説明
認証サーバーアドレス
認証サーバーのアドレス。 このアドレスは公にアクセスできる必要があります。 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を含めることはできません。 それ以外の場合、サーバーアドレスは無効と見なされます。
リクエスト方法
認証サーバーでサポートされているリクエストメソッド。 有効な値: GET、HEAD、およびPOST。 デフォルト値: GET。
ファイルの種類
すべて: 認証サーバーはすべてのファイルタイプをチェックします。
指定済み: 認証サーバーは、指定されたファイルタイプのみをチェックします。
1つ以上のファイルタイプを指定できます。 複数のファイルタイプは縦棒 (|) で区切ります。 例: mp4 | flv.
ファイルタイプは大文字と小文字が区別されます。 たとえば、。jpgとJPGは異なるファイルタイプと見なされます。
URL署名パラメータ
保持するパラメーター
認証サーバーで確認するURLパラメーター。 有効な値: [すべてのパラメーターを保持] 、[指定したパラメーターを保持] 、および [すべてのURLパラメーターを削除] 。
保持するパラメーターを複数指定する場合は、パラメーターを縦棒 (|) で区切ります。 例: user | token.
パラメータは大文字と小文字を区別します。 たとえば、keyとKEYは異なるパラメータと見なされます。
カスタムパラメータ
リクエストが認証サーバーにリダイレクトされる前に、リクエストのURLに追加するパラメーター。 キーと値のペアを指定するか、Alibaba Cloud CDNによって提供される変数を選択できます。
キーと値のペアを指定するときは、次のルールに注意してください。
キーと値のペアは縦棒 (|) で区切ります。 例: token=$arg_token | vendor=ali_cdn
値は大文字と小文字を区別します。 たとえば、keyとKEYは異なる値と見なされます。
プリセット変数を使用する場合、リクエストが認証サーバーにリダイレクトされる前に、POPに送信されるリクエストに変数の値が追加されます。
たとえば、$http_host変数を選択した場合、リクエストが認証サーバーにリダイレクトされる前に、host=$http_hostがリクエストのURLに追加されます。 この例では、hostはHostリクエストヘッダーの値です。 変数の詳細については、「変数」をご参照ください。
リクエストヘッダーに保持するパラメーター
保持するヘッダーの要求
認証サーバーで確認するリクエストヘッダー。 有効な値は、[すべてのリクエストヘッダーを保持] 、[指定したリクエストヘッダーを保持] 、[すべてのリクエストヘッダーを削除] です。
保持する複数のリクエストヘッダーを指定する場合は、リクエストヘッダーを縦棒 (|) で区切ります。 例: user_agent | リファラー | クッキー
リクエストヘッダーは大文字と小文字を区別しません。 たとえば、http_remote_addrとHTTP_Remote_Addrは同じリクエストヘッダーと見なされます。
説明[すべてのリクエストヘッダーを保持] を選択した場合、POPはリクエストからホストヘッダーを削除します。 リクエストにホストヘッダーを保持する場合は、[指定したリクエストヘッダーの保持] を選択するか、カスタムパラメーターを設定します。 認証サーバーにリダイレクトされるリクエストのHostヘッダーには、高速化ドメイン名が指定されます。 したがって、POPは自動的にリクエストからHostヘッダーを削除します。 そうしないと、認証サーバーはこれらの要求を識別できず、認証の失敗を示すHTTP 404ステータスコードなどのエラーを返す可能性があります。
カスタムパラメータ
リクエストが認証サーバーにリダイレクトされる前にリクエストヘッダーに追加するパラメーター。 キーと値のペアを指定するか、Alibaba Cloud 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ステータスコード。
HTTPステータスコードを200に設定した場合、認証サーバーは認証に合格したクライアント要求に対してHTTP 200ステータスコードをPOPに返します。
認証サーバーによって返されたHTTPステータスコードが、リクエストが認証に合格するか失敗するかを示さない場合、POPはリクエストを許可します。 たとえば、認証に合格したリクエストに対して指定されたHTTPステータスコードが200であるが、認証サーバーがリクエストに対してHTTP 201ステータスコードを返した場合、POPはリクエストを許可します。 これにより、例外によりリクエストがブロックされることはありません。
認証失敗
リクエストが認証に失敗した場合に認証サーバーによって返されるHTTPステータスコード。
HTTPステータスコードを403に設定すると、認証に失敗したクライアント要求に対して、認証サーバーはHTTP 403ステータスコードをPOPに返します。
認証サーバーによって返されたHTTPステータスコードが、リクエストが認証に合格するか失敗するかを示さない場合、POPはリクエストを許可します。 たとえば、認証に失敗したリクエストに対して指定されたHTTPステータスコードが403であるが、認証サーバーがリクエストに対してHTTP 404ステータスコードを返した場合、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ミリ秒に設定できます。
Action After Timeout
リクエストの認証がタイムアウトしたときにPOPがリクエストに対して実行するアクション。 有効な値: [許可] および [拒否] 。
許可: リクエストの認証がタイムアウトすると、POPはリクエストを許可します。
拒否: リクエストの認証がタイムアウトすると、POPはリクエストを拒否し、カスタムHTTPステータスコードで指定されたHTTPステータスコードをクライアントに返します。
OK をクリックします。
リモート認証を設定した後、[リモート認証] タブでリモート認証の設定を変更したり、リモート認証を無効にしたりできます。
変数
カスタムパラメーターを追加するときに、Alibaba Cloud 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 アドレス。 |
$スキーム | リクエストのプロトコル。 |
$server_protocol | リクエストのプロトコルバージョン。 |
$uri | リクエストの元のURI。 |
$args | リクエストURLのクエリ文字列。 クエリ文字列には疑問符 (?) は含まれません。 |
$request_method | リクエスト方式。 |
$request_uri | uri + '?' + argsのコンテンツ。 |
FAQ
Alibaba Cloud CDNのURL署名機能とリモート認証機能を同時に有効にするはできますか。
認証サーバーから返されたステータスコードが成功または失敗を示していない場合でも、Alibaba Cloud CDNがリクエストを許可するのはなぜですか。