コンピューティング:共通パラメーターと認証方式
共通パラメーター
ニフクラコンピューティングAPIでリクエストを行う場合、リクエスト毎に以下の共通パラメーターを常に付加する必要があります。
(後述のIF仕様では、リクエストサンプルに”CommonParams”として記述しています。)
パラメーター | 説明 | 必須 | サンプル値 |
---|---|---|---|
AccessKeyId | コントロールパネルより取得したAccessKey | ○ | |
SignatureVersion | 認証バージョン 指定可能な値 : 2 [SignatureVersion=2] 必須 : AccessKeyId, Timestamp, SignatureMethod, Signature |
○ | 2 |
Signature | 認証文字列 ※生成ロジックは後述 |
○ | |
Version | 実行するAPIのバージョン | 1.7 | |
Timestamp | APIへのリクエスト日時 形式 : YYYY-MM-DDThh:mm:ssZ |
○ | 2011-02-01T10:01:55Z |
SignatureMethod | APIの認証ロジック 指定可能な値 : HmacSHA1 | HmacSHA256 |
○ | HmacSHA1 |
※リクエスト時は、共通パラメーター以外とあわせて以下のパラメーターを付加する必要があります。
- 実行するAPI名(Action=[API名])
- APIのパラメーター
※Signature(認証文字列)は、SignatureVersionパラメーターの値によって、生成ロジックが異なります。以下を参考にしてください。
シグネチャーバーション 2
StringToSign = HTTPリクエストメソッド + \n
endpointのドメイン部分 + \n
URLエンコードしたendpointのパス部分 + \n
リクエスト文字列(*)
Signature = Base64(SignatureMethod によるハッシュ(SecretAccessKey, StringToSign) )
(*)リクエスト文字列:
1. パラメーター名をUTF-8の自然順序でソートする
2. パラメーター名と値をURLエンコードする
3. パラメーター名と値をイコール(“=”)で連結する
4. パラメーター名と値のペアを、アンパサント(“&”)で連結する
例:StringToSign = GET¥n
jp-east-1.computing.api.nifcloud.com¥n
/api/services/NiftyCloud/¥n
AccessKeyId=AKIAIZXJ5ZDCD7NZ73XQ&Action=DescribeImages&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-01-02T12%3A13%3A17.335Z
※パラメーター名と値のURLエンコードは下記の仕様に従います。
- RFC3986に定義されている非予約文字はURLエンコードしません。
非予約文字とは「A-Z、a-z、0-9、ハイフン(-)、アンダースコア(_)、ピリオド(.)、チルダ(~)」を指します。 - ほかのすべての文字列について、URLエンコードを行います。
例えば、半角スペースはパーセントエンコーディングで「%20」に符号化します。
※endpointのパス部分のURLエンコードは下記の仕様に従います。
- 上記のパラメーター名と値のURLエンコード仕様に加えて、スラッシュ(/)もURLエンコードしません。
認証方式
APIサーバーは、Signatureを前述の方法で同様に生成し、リクエストパラメーターとして受け取ったSignatureと文字列比較を行います。
文字列が一致すると、認証文字列は正しいと判定し、Actionパラメーターで指定されたAPIの処理を実行します。