シェルスクリプトを作成する

APIを呼び出す際は、認証のために署名を生成する必要があります。

本チュートリアルでは、署名の生成に、bash、OpenSSL、その他UNIXコマンドを使用します。

1.以下のシェルスクリプトを、「api.sh」という名前で保存します。
#!/bin/bash
API_HOST=$1
METHOD=$2
REQUESTURI=$3
if [ "$METHOD" = "POST" -o "$METHOD" = "PUT" ]; then
  REQUESTBODY=$4
else
  QUERYSTRING=$4
fi
API_ACCESS_KEY=$IIJAPI_ACCESS_KEY
API_SECRET_KEY=$IIJAPI_SECRET_KEY
CONTENTMD5VALUE=""
CONTENTTYPEVALUE=""
if [ -n "$REQUESTBODY" ]; then
  CONTENTTYPEVALUE="application/json; charset=utf-8"
fi
EXPIRES=`date -u -d '1 hours' +%FT%H:%M:%SZ`
STRING_TO_SIGN=string2sign.$$
trap "test -f '$STRING_TO_SIGN' && /bin/rm '$STRING_TO_SIGN'" 0 1 2 3 15
echo    $METHOD                                > $STRING_TO_SIGN
echo    $CONTENTMD5VALUE                      >> $STRING_TO_SIGN
echo    $CONTENTTYPEVALUE                     >> $STRING_TO_SIGN
echo    "x-iijapi-expire:${EXPIRES}"          >> $STRING_TO_SIGN
echo    "x-iijapi-signaturemethod:HmacSHA256" >> $STRING_TO_SIGN
echo    "x-iijapi-signatureversion:2"         >> $STRING_TO_SIGN
echo -n $REQUESTURI                           >> $STRING_TO_SIGN
SIGNATURE=`openssl dgst -sha256 -binary -hmac "$API_SECRET_KEY" "$STRING_TO_SIGN" | base64`
if [ -n "$REQUESTBODY" ]; then
  curl \
   -H "x-iijapi-Expire: ${EXPIRES}" \
   -H "x-iijapi-SignatureMethod: HmacSHA256" \
   -H "x-iijapi-SignatureVersion: 2" \
   -H "Authorization: IIJAPI ${API_ACCESS_KEY}:${SIGNATURE}" \
   -H "Content-Type: ${CONTENTTYPEVALUE}" \
   -X $METHOD \
   -d "$REQUESTBODY" \
   -w '\n' \
  https://${API_HOST}${REQUESTURI}
elif [ -n "$QUERYSTRING" ]; then
  curl \
   -H "x-iijapi-Expire: ${EXPIRES}" \
   -H "x-iijapi-SignatureMethod: HmacSHA256" \
   -H "x-iijapi-SignatureVersion: 2" \
   -H "Authorization: IIJAPI ${API_ACCESS_KEY}:${SIGNATURE}" \
   -X $METHOD \
   -w '\n' \
  https://${API_HOST}${REQUESTURI}?${QUERYSTRING}
else
  curl \
   -H "x-iijapi-Expire: ${EXPIRES}" \
   -H "x-iijapi-SignatureMethod: HmacSHA256" \
   -H "x-iijapi-SignatureVersion: 2" \
   -H "Authorization: IIJAPI ${API_ACCESS_KEY}:${SIGNATURE}" \
   -X $METHOD \
   -w '\n' \
  https://${API_HOST}${REQUESTURI}
fi

補 足

  • 認証・リクエストの署名について詳しくは、各API仕様書の「認証・リクエストの署名」をご覧ください。
    例えば、DOMAIN-APIリファレンスの場合は、「API利用方法」>「認証・リクエストの署名」をご覧ください。