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 とお客様のみが知っている必要があります。
リクエストに署名するには、次の手順に従います。
- リクエストパラメータに基づいて正規化されたクエリ文字列を作成します。
- リクエストパラメータ(Signature を除くすべての共通パラメータと操作固有のパラメータを含む)をアルファベット順にソートして、正規化されたクエリ文字列を作成します。説明 リクエストが GET リクエストの場合、リクエスト URI のパラメータ、つまり、リクエスト URI の疑問符 (
&?) の後にアンパサンド () で区切られたパラメータを使用します。 - 関連するリクエストパラメータの名前と値を 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をチルダ (~) に置き換えて、エンコード規則に準拠させます。
- 大文字、小文字、数字、およびハイフン (
- 等号 (=) を使用して、各 URL エンコードされたリクエストパラメータの名前と値をキーと値のペアとして接続します。
- 等号 (=) で接続されたキーと値のペアをアルファベット順にソートし、アンパサンド (
&) で区切ります。
- リクエストパラメータ(Signature を除くすべての共通パラメータと操作固有のパラメータを含む)をアルファベット順にソートして、正規化されたクエリ文字列を作成します。
- 次の規則に基づいて、エンコードされた正規化クエリ文字列から署名対象文字列を作成します。
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)HTTPMethod は、リクエストの送信に使用される HTTP メソッド (GET など) を指定します。
percentEncode("/") は、前の手順で説明した URL エンコード規則に基づくスラッシュ (
/) のエンコード値 (%2F) を指定します。percentEncode(CanonicalizedQueryString) は、前の手順 1 で作成された正規化クエリ文字列のエンコードされた文字列を指定し、前の手順で説明した URL エンコード規則に従って生成されます。
- RFC 2104 で定義されているように、署名対象文字列の HMAC 値を計算します。説明 SHA1 アルゴリズムを使用して、署名対象文字列の HMAC 値を計算します。アンパサンド (
&) (ASCII:38) が追加された AccessKey Secret は、HMAC 計算のキーとして使用されます。 - HMAC 値を Base64 でエンコードして、署名文字列を取得します。
- 署名文字列を 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-18AccessKey ID が
testId で、AccessKey Secret が testKeySecret の場合、HMAC 計算に使用されるキーは testKeySecret& で、計算された署名文字列は次のとおりです。kmDv4mWo806GWPjQMy2z4VhBBDQ%3DSignature パラメータが追加された署名付きリクエスト 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 操作の呼び出し」をご参照ください。