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

:署名方法

最終更新日:Nov 10, 2025

ApsaraVideo Media Processing は、各アクセスリクエストを認証します。そのため、リクエストは HTTP 経由で送信されるか HTTPS 経由で送信されるかに関係なく、署名情報を含める必要があります。リクエストを送信すると、ApsaraVideo Media Processing は AccessKey ID と AccessKey Secret に基づく対称暗号化を使用して ID を認証します。 AccessKey ID と AccessKey Secret は、Alibaba Cloud によって発行されます。 Alibaba Cloud Webサイトで申請および管理できます。 AccessKey ID は ID の検証に使用され、AccessKey Secret はサーバー上の署名文字列の暗号化と検証に使用されます。 AccessKey Secret は機密にしておく必要があり、Alibaba Cloud とお客様のみが知っている必要があります。

リクエストに署名するには、次の手順に従います。

  1. リクエストパラメータに基づいて正規化されたクエリ文字列を作成します。
    1. リクエストパラメータ(Signature を除くすべての共通パラメータと操作固有のパラメータを含む)をアルファベット順にソートして、正規化されたクエリ文字列を作成します。
      説明 リクエストが GET リクエストの場合、リクエスト URI のパラメータ、つまり、リクエスト URI の疑問符 (&?) の後にアンパサンド () で区切られたパラメータを使用します。
    2. 関連するリクエストパラメータの名前と値を UTF-8 でエンコードします。エンコード規則は次のとおりです。
      • 大文字、小文字、数字、およびハイフン (-)、アンダースコア (_)、ピリオド (.)、チルダ (~) などの特殊文字はエンコードする必要はありません。
      • その他の文字は %XY 形式でエンコードする必要があります。ここで、XY は 16 進表記の文字の ASCII コードを表します。たとえば、二重引用符 (") は %22 としてエンコードされます。
      • 拡張 UTF-8 文字は %XY%ZA... 形式でエンコードされます。
      • スペースは %20 としてエンコードする必要があります。スペースをプラス記号 (+) としてエンコードしないでください。
        説明 java.net.URLEncoder など、URL エンコードをサポートするほとんどのライブラリは、application/x-www-form-urlencoded の MIME (Multipurpose Internet Mail Extensions) エンコード規則に準拠しています。このエンコード方法を使用する場合は、エンコードされた文字列のプラス記号 (+) を %20 に、アスタリスク (*) を %2A に、%7E をチルダ (~) に置き換えて、エンコード規則に準拠させます。
    3. 等号 (=) を使用して、各 URL エンコードされたリクエストパラメータの名前と値をキーと値のペアとして接続します。
    4. 等号 (=) で接続されたキーと値のペアをアルファベット順にソートし、アンパサンド (&) で区切ります。
  2. 次の規則に基づいて、エンコードされた正規化クエリ文字列から署名対象文字列を作成します。
    
    StringToSign=
    HTTPMethod + "&" +
    percentEncode("/") + "&" +
    percentEncode(CanonicalizedQueryString)

    HTTPMethod は、リクエストの送信に使用される HTTP メソッド (GET など) を指定します。

    percentEncode("/") は、前の手順で説明した URL エンコード規則に基づくスラッシュ (/) のエンコード値 (%2F) を指定します。

    percentEncode(CanonicalizedQueryString) は、前の手順 1 で作成された正規化クエリ文字列のエンコードされた文字列を指定し、前の手順で説明した URL エンコード規則に従って生成されます。

  3. RFC 2104 で定義されているように、署名対象文字列の HMAC 値を計算します。
    説明 SHA1 アルゴリズムを使用して、署名対象文字列の HMAC 値を計算します。アンパサンド (&) (ASCII:38) が追加された AccessKey Secret は、HMAC 計算のキーとして使用されます。
  4. HMAC 値を Base64 でエンコードして、署名文字列を取得します。
  5. 署名文字列を Signature パラメータの値としてリクエストに追加します。
    説明 署名文字列は、最終的なリクエストパラメータ値としてメディアトランスコーディングサーバーに送信する前に、RFC 3986 規則に基づいて URL の他のパラメータと同様にエンコードする必要があります。
たとえば、署名前の SearchTemplate 操作のリクエスト URL は次のとおりです。
http://mts.cn-hangzhou.aliyuncs.com/?Timestamp=2015-05-14T09%3A03%3A45Z&Format=XML&AccessKeyId=testId&Action=SearchTemplate&PageSize=2&SignatureMethod=HMAC-SHA1&SignatureNonce=4902260a-516a-4b6a-a455-45b653cf6150&SignatureVersion=1.0&Version=2014-06-18
正規化されたクエリ文字列は次のとおりです。
AccessKeyId=testId&Action=SearchTemplate&Format=XML&PageSize=2&SignatureMethod=HMAC-SHA1&SignatureNonce=4902260a-516a-4b6a-a455-45b653cf6150&SignatureVersion=1.0&Timestamp=2015-05-14T09%3A03%3A45Z&Version=2014-06-18
署名対象文字列は次のとおりです。
GET&%2F&AccessKeyId%3DtestId%26Action%3DSearchTemplate%26Format%3DXML%26PageSize%3D2%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D4902260a-516a-4b6a-a455-45b653cf6150%26SignatureVersion%3D1.0%26Timestamp%3D2015-05-14T09%253A03%253A45Z%26Version%3D2014-06-18
AccessKey ID が testId で、AccessKey Secret が testKeySecret の場合、HMAC 計算に使用されるキーは testKeySecret& で、計算された署名文字列は次のとおりです。
kmDv4mWo806GWPjQMy2z4VhBBDQ%3D
Signature パラメータが追加された署名付きリクエスト URL は次のとおりです。
http://mts.cn-hangzhou.aliyuncs.com/?Signature=kmDv4mWo806GWPjQMy2z4VhBBDQ%3D&SignatureVersion=1.0&Action=SearchTemplate&Format=XML&SignatureNonce=4902260a-516a-4b6a-a455-45b653cf6150&PageSize=2&Version=2014-06-18&AccessKeyId=testId&SignatureMethod=HMAC-SHA1&Timestamp=2015-05-14T09%3A03%3A45Z

コードの詳細については、「API 操作の呼び出し」をご参照ください。