認証サーバをお持ちの場合、リモート認証機能を使用してユーザーのリクエストをそのサーバに転送し、検証できます。
仕組み
リモート認証と URL 署名は、いずれもコンテンツへの不正アクセスから保護するために使用されます。主な違いは実装方法にあります。
-
URL 署名:ユーザーがドメイン名の署名ルールを DCDN ノードに配布し、DCDN ノードがデータのやり取りおよび認証プロセス全体を担当します。
-
リモート認証:ユーザー自身で認証サーバを提供します。DCDN POP がリクエストを受信すると、そのリクエストをユーザーの認証サーバに転送して検証を行います。認証サーバの管理はユーザーが行う必要があります。
リモート認証の処理フローは次のとおりです。
|
ステップ |
説明 |
|
1 |
クライアントがリソースのリクエストを DCDN POP に送信します。このリクエストには認証パラメーターが含まれます。例:
|
|
2 |
DCDN POP がリクエストを受信し、指定されたルールに基づいて直接または間接的に認証サーバに転送します。例:
|
|
3 |
認証サーバが認証パラメーターに基づいてリクエストを検証し、結果を DCDN POP に返します。 |
|
4 |
DCDN POP が認証結果に基づいて処理を行い、クライアントに応答を返します。 認証結果の例:
|
注意事項
-
リモート認証を構成した後でも、認証に失敗したリクエストは引き続き DCDN ノードに到達します。DCDN ノードによってリクエストが拒否され、403 ステータスコードが返されますが、クライアントからのリクエストは DCDN のログに記録されます。
-
リモート認証では、リクエストがユーザーの認証サーバに転送されて検証されるため、攻撃リクエストが DCDN POP によってブロックされた場合でも、最小限のデータ転送料金が発生します。クライアントが HTTPS を使用している場合は、攻撃リクエストのブロッキングにより DCDN POP のリソースが消費されるため、HTTPS リクエスト料金も課金されます。
リモート認証では、ディレクトリ単位での認証範囲の設定はサポートされていません。ファイルタイプ単位でのみ認証範囲を設定できます。
操作手順
-
DCDN コンソールにログインします。
-
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
-
ドメイン名 ページで、管理対象のドメイン名を検索し、設定 をクリックします。
-
ドメイン名の左側のナビゲーションツリーで、アクセス制御 をクリックします。
-
リモート認証 タブをクリックします。
-
リモート認証 スイッチをオンにして、パラメーターを構成します。
説明リモート認証を有効化すると、すべてのユーザーのリクエストが認証サーバに転送されて処理されます。リクエスト量が多いことが予想される場合は、認証サーバのパフォーマンスと容量が十分であることを確認してください。
パラメーター
説明
認証サーバーアドレス
認証サーバのパブリックにアクセス可能なアドレス。システムは入力されたアドレスの形式と値を検証します。
-
形式要件
アドレスは 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 です。
ファイルタイプ
-
すべて:すべてのファイルタイプが認証対象になります。
-
指定済み:指定したファイルタイプのみが認証対象になります。
-
複数のファイルタイプを指定する場合は、縦棒 (|) で区切ります(例:mp4|flv)。
-
ファイルタイプは大文字と小文字を区別します。たとえば、.jpg と JPG は異なるファイルタイプとして扱われます。
-
URL 署名パラメーター
保持するパラメーター
ユーザーのリクエスト URL からどのパラメーターを認証リクエストに含めるかを制御します。選択肢は すべてのパラメーターを保持、指定されたパラメーターを保持、すべての URL パラメーターを削除 です。
-
指定したパラメーターを保持する場合、複数のパラメーターは縦棒 (|) で区切ります(例:user|token)。
-
パラメーターは大文字と小文字を区別します。たとえば、key と KEY は異なるパラメーターとして扱われます。
カスタムパラメーター
DCDN POP が認証サーバに転送するリクエスト URL にカスタムパラメーターを追加します。カスタムのキーと値のペアを定義するか、DCDN コンソールのプリセット変数を使用できます。
-
カスタムパラメーターを定義する場合:
-
複数のパラメーターは縦棒 (|) で区切ります(例:
token=$arg_token|vendor=ali_dcdn)。 -
パラメーターの値は大文字と小文字を区別します。たとえば、key と KEY は異なる値として扱われます。
-
-
プリセット変数を使用する場合、その値は DCDN が認証サーバに転送するリクエストに追加されます。
たとえば、$http_host 変数を選択すると、
host=$http_hostがリクエスト URL に追加されます。ここで、$http_hostは元のリクエストの Host ヘッダーの値です。詳細については、「変数」をご参照ください。
リクエストヘッダーパラメーター
保持するリクエストヘッダー
ユーザーのリクエストからどのヘッダーを認証リクエストに含めるかを制御します。選択肢は すべてのパラメーターを保持、指定されたパラメーターを保持、すべての URL パラメーターを削除 です。
-
指定したヘッダーを保持する場合、複数のヘッダーは縦棒 (|) で区切ります(例:user_agent|referer|cookies)。
-
ヘッダー名は大文字と小文字を区別しません。たとえば、http_remote_addr と HTTP_Remote_Addr は同じヘッダーとして扱われます。
説明「すべてのパラメーターを保持」を選択した場合、DCDN ノードはデフォルトで Host ヘッダーを削除します。Host ヘッダーを保持する必要がある場合は、「指定したパラメーターを保持」または「カスタムパラメーターを追加」を使用してください。DCDN ノードが Host ヘッダーをデフォルトで削除するのは、DCDN ノードが認証サーバに転送する認証リクエストの Host ヘッダーが高速化ドメイン名になるため、認証サーバが認証リクエストを認識できず、404 ステータスコードが返され、認証が失敗する可能性があるためです。
カスタムパラメーター
DCDN POP が認証サーバに転送するリクエストにカスタムヘッダーを追加します。カスタムのキーと値のペアを定義するか、DCDN コンソールのプリセット変数を使用できます。
-
カスタムパラメーターを定義する場合:
-
複数のヘッダーは縦棒 (|) で区切ります(例:
User-Agent=$http_user_agent|vendor=ali_dcdn)。 -
ヘッダー名は大文字と小文字を区別しません。たとえば、http_remote_addr と HTTP_Remote_Addr は同じヘッダーとして扱われます。
-
-
プリセット変数を使用する場合、その値は DCDN が認証サーバに転送するリクエストに追加されます。
たとえば、$http_host 変数を選択すると、
host=$http_hostがリクエスト URL に追加されます。ここで、$http_hostは元のリクエストの Host ヘッダーの値です。詳細については、「変数」をご参照ください。
返す HTTP ステータスコード
認証完了
説明: 認証サーバが認証成功時に DCDN に返す HTTP ステータスコード。複数のステータスコードをカンマで区切って指定できます。
例: このパラメーターを
200,206に設定した場合、認証サーバからの応答が200または206であれば、認証が成功したとみなされます。例外処理: 問題が発生した際にすべてのユーザーのトラフィックがブロックされないようにするため、認証サーバが成功リストまたは失敗リストに含まれないステータスコードを返した場合、DCDN POP はデフォルトでリクエストを許可します。
認証失敗
説明: 認証サーバが認証失敗時に DCDN に返す HTTP ステータスコード。複数のステータスコードをカンマで区切って指定できます。
例: このパラメーターを
400,403に設定した場合、認証サーバからの応答が400または403であれば、認証が失敗したとみなされます。例外処理: 問題が発生した際にすべてのユーザーのトラフィックがブロックされないようにするため、認証サーバが成功リストまたは失敗リストに含まれないステータスコードを返した場合、DCDN POP はデフォルトでリクエストを許可します。
その他のステータスコードを許可
-
はい:認証サーバが成功リストまたは失敗リストに含まれないステータスコードを返した場合、DCDN POP はユーザーのリクエストを許可します。これにより、予期しない応答によるサービス中断を防ぎます。
説明例:
-
成功ステータスコードが 200 に設定されており、サーバが 201 を返した場合、リクエストは許可されます。
-
失敗ステータスコードが 403 に設定されており、サーバが 404 を返した場合、リクエストは許可されます。
-
-
いいえ:認証サーバが成功リストまたは失敗リストに含まれないステータスコードを返した場合、DCDN POP はユーザーのリクエストを拒否します。
DCDN の認証失敗後のアクション
カスタム HTTP ステータスコード
リクエストの認証に失敗した場合に、DCDN POP がクライアントに返すステータスコード。
たとえば、これを 403 に設定すると、認証失敗時に DCDN POP がクライアントに 403 ステータスコードを返します。
認証タイムアウト設定
タイムアウト
認証リクエストの時間制限です。タイマーは、DCDN POP がリクエストを送信すると開始され、DCDN POP がこの時間内に認証サーバから応答を受信しない場合、タイムアウトします。単位: ミリ秒。最大値は 3000 です。
タイムアウト後の対応
DCDN と認証サーバ間のデータのやり取りがタイムアウトした場合、DCDN はユーザーのリクエストに対してアクションを実行します。サポートされているアクションは 許可 と 拒否 です。それぞれの違いは以下のとおりです。
-
許可:認証がタイムアウトした場合、DCDN POP がユーザーのリクエストを許可します。
-
拒否:認証がタイムアウトした場合、DCDN POP がユーザーのリクエストを拒否し、上記で指定した カスタム HTTP ステータスコード を返します。
-
-
-
OK をクリックして構成を保存します。
リモート認証の構成が完了すると、リモート認証 タブで設定を変更または無効化できます。
変数
カスタムパラメーターを追加する際、DCDN コンソールのプリセット変数を使用できます。利用可能な変数は次の表のとおりです。
|
変数 |
説明 |
|
$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 |
リクエストのクエリ文字列(疑問符 (?) を含まない)。 |
|
$request_method |
リクエストメソッド。 |
|
$request_uri |
リクエスト URI とそのクエリ文字列。 |