認証・リクエストの署名

認証・リクエストの署名

CAC-APIを呼び出す際には、認証のためにAccessKeyとSignatureを利用します。

AccessKeyはサービスオンラインの画面から取得することができます。AccessKeyの取得方法については、AccessKeyを参照してください。

Signatureはリクエストパラメータから一定の手順で生成した文字列です。Signatureを生成する際に、AccessKeyと同時に発行されるSecretKeyを利用します。 

Signatureは以下の手順で生成します。

  1. Signature以外のリクエストパラメータを確定します。
  2. HTTPリクエストメソッド、HTTPリクエストヘッダ文字列、URIエンコードしたパス部分を以下の順序で結合した文字列を生成し、StringToSignとします。

    HTTPリクエストメソッド+\n
    HTTPリクエストヘッダ文字列+\n
    URIエンコードしたパス部分 
    1. HTTPリクエストメソッド
      GET、PUT、POSTのいずれかを連結します。
    2. HTTPリクエストヘッダ文字列
      リクエストパラメータを以下の手順で正規化して作成します。
      1. リクエストヘッダキーをUTF-8の辞書順でソートします。
      2. リクエストヘッダ値を改行文字("\n"、LF、0x0A)で連結します。リクエストヘッダキーが"Content-MD5"または"Content-Type"の場合は、値を連結します。
        リクエストヘッダキーの接頭文字が"x-iijapi-"の場合は、リクエストヘッダキーを小文字に変換してリクエストヘッダ値とコロン(":"、0x3A)記号で連結します。
        上記以外のリクエストヘッダキーは連結しないでください。
    3. URIエンコード(Signature生成時のURLエンコード方法)したパス部分を連結します。
      /r/(APIVersion)/(ServiceCode)/(API名).json
  3. 生成したStringToSignに対し、SignatureMethodで指定したハッシュアルゴリズムに従いHMACを算出します。
    • HMACを算出する際の Keyとして、AccessKeyと同時に取得したSecrectKeyを指定します。
  4. 算出したHMACをBase64エンコードします。