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

Edge Security Acceleration:サーバー認証

最終更新日:Jan 03, 2025

認証機能を使用すると、不正なダウンロードやアクセスからWebサイト資産を保護できます。 このトピックでは、Edge Security Acceleration (ESA) のサーバー認証機能の動作について説明し、説明を容易にするための例を示します。

仕組み

  • 署名付きURLの構成

    http://server_address[:port]/[uri]?auth_key=timestamp-rand-md5hash
  • 署名付きURLのフィールド

    項目

    説明

    server_address

    リソースが配置されているサーバーのアドレス。

    port

    サーバーポート。

    ウリ

    サーバー上の特定のリソースの相対パス。

    auth_key

    指定した認証キー。

    timestamp

    署名付きURLの有効期限が切れるタイムスタンプ。 この値は、署名付きURLが生成されたときに指定された有効期限 (TTL) をUNIXタイムスタンプに加算することによって計算されます。 生成タイムスタンプは、1月1日1970 00:00:00 UTCから経過した秒数を示す10桁の整数です。

    説明

    rand

    ランダムな文字列。 文字列にハイフン (-) を含めることはできません。 例: 477b3bbc253f467b8def6711128c7bec。 ユニバーサル一意識別子 (UUID) の使用を推奨します。

    md5hash

    MD5アルゴリズムを使用して計算される文字列。 文字列の長さは32文字で、数字と小文字を使用できます。

    計算方法:

    string_to_sign = "URI-Timestamp-rand-PrivateKey" (URI indicates the relative path of the specific resource and does not contain query string parameters. Example: /accesslog/post)
    md5hash = md5sum(string_to_sign)
  • 認証ロジック

    ポイントオブプレゼンス (POP) がリクエストを受信すると、POPはtimestampの値が現在の時刻よりも早いかどうかをチェックします。

    • timestampが現在の時刻より前の場合、POPは要求されたURLが期限切れであるとみなし、HTTPステータスコード403を返します。

    • timestampが現在の時刻より後の場合、前の表で説明したstring_to_signを使用して文字列が生成されます。 次に、MD5アルゴリズムを使用してmd5hash値が生成されます。 生成されたmd5hash値は、リクエスト内のmd5hash値と比較されます。

      • 2つの値が同じ場合、要求は認証を通過します。 POPは、要求されたリソースを返す。

      • それらが異なる場合、要求は認証に失敗する。 POPはHTTPステータスコード403を返します。

リソースURLは http://abc.aliyun.com:8080/accesslog/postPrivateKeyはaliyuncdn1234、ExpiredTimeで指定されたTTLは300秒です。

  • 現在の時刻が2017 12月1日のUTC + 8:00の00:00:00であるとします。これは1512057600 UNIX形式で表されます。 署名付きURLに含まれるタイムスタンプは、次の式を使用して計算されます。

    timestamp= 1512057600 + 300 = 1512057900

    署名する文字列:

    string_to_sign = "/accesslog/post-1512057900-0-aliyuncdn1234"
  • この文字列に基づいてmd5hash値を計算します。

    md5hash = md5sum("/accesslog/post-1512057900-0-aliyuncdn1234") = 0b3cc22622bdbb82d5ba632a5a5c89ca
  • 署名されたURL:

    http://abc.aliyun.com:8080/accesslog/post?auth_key=1512057900-0-0b3cc22622bdbb82d5ba632a5a5c89ca

クライアントが署名付きURLを使用してリソースを要求する場合、ESA POPは計算されたmd5hash値を要求内のmd5hash値と比較します。 値が同じ (この例では0b3cc22622bdbb82d5ba632a5a5c8 9ca) で、署名付きURLが有効期間内の場合、リクエストは期待どおりに処理されます。 値が異なる場合、リクエストは認証に失敗します。