認証・リクエストの署名

認証・リクエストの署名

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

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

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

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

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

    HTTPリクエストメソッド+\n
    HTTPリクエストヘッダ文字列+\n
    URIエンコードしたパス部分 
    1. HTTPリクエストメソッド
      GET、PUT、POST、DELETEのいずれかを連結します。
    2. HTTPリクエストヘッダ文字列
      リクエストパラメータを以下の手順で正規化して作成します。
      1. リクエストヘッダキーをUTF-8の辞書順でソートします。
      2. リクエストヘッダ値を改行文字("\n"、LF、0x0A)で連結します。
        リクエストヘッダキーが"Content-MD5"または"Content-Type"の場合は、値を連結します。
        リクエストヘッダキーの接頭文字が"x-iijapi-"の場合は、リクエストヘッダキーを小文字に変換してリクエストヘッダ値とコロン(":"、0x3A)記号で連結します。
        上記以外のリクエストヘッダキーは連結しないでください。
    3. URIエンコード(Signature生成時のURLエンコード方法)したパス部分を連結します。 ただし、連結時の"/"はURIエンコードする必要はありません。

      例:get records(ゾーン名がexample.jpの場合)

      /r/20140601/do0000000/example.jp/records/DETAIL.json

      例:get records(ゾーン名が192.168.0.0/24の場合)

      /r/20140601/do0000000/192.168.0.0%2F24/records/DETAIL.json
  3. 生成したStringToSignに対し、SignatureMethodで指定したハッシュアルゴリズムに従いHMACを算出します。
    • HMACを算出する際の Keyとして、AccessKeyと同時に取得したSecrectKeyを指定します。
  4. 算出したHMACをBase64エンコードします。