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

CDN:リモート認証の設定

最終更新日:Feb 29, 2024

独自の認証サーバーがある場合は、認証のためにユーザーリクエストを認証サーバーに転送するようにリモート認証を設定できます。

機能の概要

リモート認証はURL署名に似ています。 どちらもリソースを不正アクセスから保護するために使用されます。 POPからリソースを取得できるのは、許可されたユーザーのみです。 URL署名とリモート認証の違い:

  • URL署名: ドメイン名に対して作成された認証ルールをPOPに適用すると、POPは認証プロセスを完了します。

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

リモート認証の仕組みを次の図に示します。远程鉴权交互图

いいえ

説明

1

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

  • 元のリクエストURL: https://example.com/123/test.txt?key=xxxxxxxxxx

  • 元のリクエストのヘッダー: test=123

2

POPはリクエストを受信し、リクエストを認証サーバーにリダイレクトします。 リクエストが認証サーバーにリダイレクトされる前に、リクエストがPOPによって処理されるかどうかを指定できます。 例:

  • 認証サーバのURL: https:// 192.0.2.1/auth

  • Alibaba Cloud CDNコンソールのリモート認証機能の設定: すべてのリクエストパラメーターを保持すべてのリクエストヘッダーを保持します。

  • Alibaba Cloud CDNによって認証サーバーに転送されるリクエストのURL: https:// 192.0.2.1/auth?key=xxxxxxxxxx

  • Alibaba Cloud CDNによって認証サーバーに転送されるリクエストのヘッダー: test=123

3

認証サーバーはリクエスト内のパラメーターを確認し、認証結果をPOPに返します。

4

POPは、認証結果に基づいて対応するアクションを実行し、データをクライアントに返します。

例:

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

  • 例2: リクエストが認証に失敗しました。 POPは、HTTP 403ステータスコードをクライアントに返します。

  • 例3: リクエストが認証に失敗しました。 POPは、クライアントから送信される要求を抑制する。

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

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. [ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。

  4. ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。

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

  6. [リモート認証] をオンにし、プロンプトに従ってパラメーターを設定します。

    説明

    リモート認証を有効にすると、すべてのユーザーリクエストが認証サーバーにリダイレクトされます。 大量のリクエストが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を含めることはできません。 それ以外の場合、サーバーアドレスは無効と見なされます。

    リクエスト方法

    認証サーバーでサポートされているリクエストメソッド。 有効な値: GETHEAD、および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ステータスコードをクライアントに返します。

  7. 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

関連する API 操作

BatchSetCdnDomainConfig