Anfrage mittels Signature an die API stellen¶
Note
Das folgende Beispiel zeigt ein Bash-Script für Linux. Für andere Betriebssysteme ändern Sie bitte die Angaben entsprechend den spezifischen Anforderungen.
Für eine Authentifizierung mittels Signature empfehlen wir die Verwendung von Shell-Skripten für eine einfache und schnelle Erstellung von API-Anfragen.
In den folgenden Beispielen erklären wir Ihnen, wie Sie ein Bash-Skript für GET- und DELETE-Anfragen und für POST- und PUT-Anfragen erstellen können.
Bash-Skripte für GET- und DELETE-Anfragen¶
Um GET- oder DELETE-Anfragen an die API zu senden, müssen Sie ein Bash-Skript ohne BODY und mit der folgenden Struktur erstellen:
=== Start ===
#!/bin/bash
set -euo pipefail
=== Credentials ===
API_KEY="<your API key>"
API_SECRET="<your secret>"
=== Request target ===
HOST="https://apiv2.myracloud.com/"
URI="<Path to the resource to be requested, see end points>"
METHOD="<GET or DELETE>"
CONTENT_TYPE="application/json"
BODY=""
=== Date (with colon in timezone, like moment().format()) ===
DATE="$(date +"%Y-%m-%dT%H:%M:%S%:z")"
=== MD5 of body ===
if [[ -z "$BODY" ]]; then
BODY_MD5="d41d8cd98f00b204e9800998ecf8427e"
else
BODY_MD5="$(printf '%s' "$BODY" | md5sum | awk '{print $1}')"
fi
=== Signing string ===
SIGNING_STRING="${BODY_MD5}#${METHOD}#${URI}#${CONTENT_TYPE}#${DATE}"
=== Keys (CryptoJS semantics: hex string keys) ===
DATE_KEY_HEX="$(printf '%s' "$DATE" \
| openssl dgst -sha256 -mac HMAC -macopt key:"MYRA${API_SECRET}" -hex \
| awk '{print $2}')"
SIGNING_KEY_HEX="$(printf '%s' "myra-api-request" \
| openssl dgst -sha256 -mac HMAC -macopt key:"$DATE_KEY_HEX" -hex \
| awk '{print $2}')"
=== Signature ===
SIGNATURE="$(printf '%s' "$SIGNING_STRING" \
| openssl dgst -sha512 -mac HMAC -macopt key:"$SIGNING_KEY_HEX" -binary \
| base64 | tr -d '\n')"
=== Debug (safe) ===
echo "DATE: $DATE"
echo "SIGNING_STRING: $SIGNING_STRING"
echo "Authorization: MYRA ${API_KEY}:${SIGNATURE}"
=== Request ===
curl -vvv "${HOST}${URI}" \
-H "Content-Type: ${CONTENT_TYPE}" \
-H "Date: ${DATE}" \
-H "Authorization: MYRA ${API_KEY}:${SIGNATURE}" \
-X "$METHOD"
Bash-Skripte für POST- und PUT-Anfragen¶
Um POST- oder PUT-Anfragen an die API zu senden, müssen Sie ein Bash-Skript mit BODY und den erforderlichen Objektinformationen für den Endpunkt darin, erstellen.
=== Start ===
#!/bin/bash
set -euo pipefail
=== Credentials ===
API_KEY="<your API key>"
API_SECRET="<your secret>"
=== Request target ===
HOST="https://apiv2.myracloud.com/"
URI="<Path to the resource to be requested, see end points>"
METHOD="<POST or PUT>"
CONTENT_TYPE="application/json"
=== JSON body with the needed VO object with relevant attributes for the request. ===
BODY='{
"<attribute1>":"<value>",
"<attribute2>":"<value>",
"<attribute3>":"<value>"
},'
=== Date (with colon in timezone, like moment().format()) ===
DATE="$(date +"%Y-%m-%dT%H:%M:%S%:z")"
=== MD5(body) ===
BODY_MD5="$(printf '%s' "$BODY" | md5sum | awk '{print $1}')"
=== Signing string ===
SIGNING_STRING="${BODY_MD5}#${METHOD}#${URI}#${CONTENT_TYPE}#${DATE}"
=== HMAC (CryptoJS semantics: hex-string keys) ===
DATE_KEY_HEX="$(printf '%s' "$DATE" \
| openssl dgst -sha256 -mac HMAC -macopt key:"MYRA${API_SECRET}" -hex \
| awk '{print $2}')"
SIGNING_KEY_HEX="$(printf '%s' "myra-api-request" \
| openssl dgst -sha256 -mac HMAC -macopt key:"$DATE_KEY_HEX" -hex \
| awk '{print $2}')"
SIGNATURE="$(printf '%s' "$SIGNING_STRING" \
| openssl dgst -sha512 -mac HMAC -macopt key:"$SIGNING_KEY_HEX" -binary \
| base64 | tr -d '\n')"
=== Debug ===
echo "DATE: $DATE"
echo "SIGNING_STRING: $SIGNING_STRING"
echo "Authorization: MYRA ${API_KEY}:${SIGNATURE}"
=== Request (verbose) ===
curl -vvv "${HOST}${URI}" \
-H "Content-Type: ${CONTENT_TYPE}" \
-H "Date: ${DATE}" \
-H "Authorization: MYRA ${API_KEY}:${SIGNATURE}" \
--data-binary "$BODY"