help: add nonce parameter in querystring (#41241)

This commit is contained in:
Thomas NOËL 2020-04-02 01:04:54 +02:00
parent 25e0957b6b
commit d52fbc23b3
1 changed files with 13 additions and 7 deletions

View File

@ -45,12 +45,13 @@ de Sécurité (RGS)</link>.</p></note>
<p>
La signature est à calculer sur la query string encodée complète, en
enlevant les paramètres terminaux <code>algo</code>, <code>timestamp</code>,
<code>orig</code> et <code>signature</code>. La formule de calcul de la
signature est la suivante :
</p>
<code>nonce</code>, <code>orig</code> et <code>signature</code> s'ils sont
présents.</p>
<p>La formule de calcul de la signature est la suivante :</p>
<code>
BASE64(HMAC-HASH(query_string+'algo=HASH&amp;timestamp=' + timestamp + '&amp;orig=" + orig, clé))
BASE64(HMAC-HASH(query_string+'algo=HASH&amp;timestamp=' + timestamp + '&amp;nonce=' + nonce '&amp;orig=" + orig, clé))
</code>
<list>
@ -59,12 +60,16 @@ BASE64(HMAC-HASH(query_string+'algo=HASH&amp;timestamp=' + timestamp + '&amp;ori
en se limitant à la précision des secondes (ex : 2012-04-04T12:34:00Z),
</p></item>
<item><p><code>nonce</code> est un aléa, typiquement la réprésentation hexa
d'un nombre pseudo-aléatoire de 128 bits,</p></item>
<item><p><code>orig</code> est une chaîne précisant l'émetteur de la
requête,</p></item>
<item><p>algo est une chaîne représentant l'algorithme de hachage utilisé, sont
définis : sha1, sha256, sha512 pour les trois algorithmes correspondant.
L'utilisation d'une valeur différente n'est pas définie.</p></item>
L'utilisation d'une valeur différente n'est pas définie. L'algorithme sha256
est préconisé.</p></item>
</list>
@ -73,7 +78,7 @@ La query string définitive est ainsi :
</p>
<code>
<var>qs_initial</var>&amp;algo=<var>algo</var>&amp;timestamp=<var>ts</var>&amp;orig=<var>orig</var>&amp;signature=<var>signature</var>
<var>qs_initial</var>&amp;algo=<var>algo</var>&amp;timestamp=<var>timestamp</var>&amp;nonce=<var>nonce</var>&amp;orig=<var>orig</var>&amp;signature=<var>signature</var>
</code>
</section>
@ -213,7 +218,8 @@ function rawurlencode() {
}
now=$(date -u +%FT%TZ);
qs="algo=sha256&amp;timestamp=$now&amp;orig=$orig"
nonce=$(od -N16 -txL /dev/urandom | cut -c8- | tr -d " ")
qs="algo=sha256&amp;timestamp=$now&amp;nonce=$nonce&amp;orig=$orig"
sig=$(rawurlencode $(echo -n "$qs" | openssl dgst -binary -sha256 -hmac "$key" | base64))
signed="${url}?$qs&amp;signature=$sig"
echo "$signed"