Projet

Général

Profil

0001-help-add-nonce-parameter-in-querystring-41241.patch

Thomas Noël, 02 avril 2020 01:05

Télécharger (2,73 ko)

Voir les différences:

Subject: [PATCH] help: add nonce parameter in querystring (#41241)

 help/fr/api-auth.page | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)
help/fr/api-auth.page
45 45
<p>
46 46
La signature est à calculer sur la query string encodée complète, en
47 47
enlevant les paramètres terminaux <code>algo</code>, <code>timestamp</code>,
48
<code>orig</code> et <code>signature</code>. La formule de calcul de la
49
signature est la suivante :
50
</p>
48
<code>nonce</code>, <code>orig</code> et <code>signature</code> s'ils sont
49
présents.</p>
50

  
51
<p>La formule de calcul de la signature est la suivante :</p>
51 52

  
52 53
<code>
53
BASE64(HMAC-HASH(query_string+'algo=HASH&amp;timestamp=' + timestamp + '&amp;orig=" + orig, clé))
54
BASE64(HMAC-HASH(query_string+'algo=HASH&amp;timestamp=' + timestamp + '&amp;nonce=' + nonce '&amp;orig=" + orig, clé))
54 55
</code>
55 56

  
56 57
<list>
......
59 60
en se limitant à la précision des secondes (ex : 2012-04-04T12:34:00Z),
60 61
</p></item>
61 62

  
63
<item><p><code>nonce</code> est un aléa, typiquement la réprésentation hexa
64
d'un nombre pseudo-aléatoire de 128 bits,</p></item>
65

  
62 66
<item><p><code>orig</code> est une chaîne précisant l'émetteur de la
63 67
requête,</p></item>
64 68

  
65 69
<item><p>algo est une chaîne représentant l'algorithme de hachage utilisé, sont
66 70
définis : sha1, sha256, sha512 pour les trois algorithmes correspondant.
67
L'utilisation d'une valeur différente n'est pas définie.</p></item>
71
L'utilisation d'une valeur différente n'est pas définie. L'algorithme sha256
72
est préconisé.</p></item>
68 73

  
69 74
</list>
70 75

  
......
73 78
</p>
74 79

  
75 80
<code>
76
<var>qs_initial</var>&amp;algo=<var>algo</var>&amp;timestamp=<var>ts</var>&amp;orig=<var>orig</var>&amp;signature=<var>signature</var>
81
<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>
77 82
</code>
78 83

  
79 84
</section>
......
213 218
}
214 219

  
215 220
now=$(date -u +%FT%TZ);
216
qs="algo=sha256&amp;timestamp=$now&amp;orig=$orig"
221
nonce=$(od -N16 -txL /dev/urandom | cut -c8- | tr -d " ")
222
qs="algo=sha256&amp;timestamp=$now&amp;nonce=$nonce&amp;orig=$orig"
217 223
sig=$(rawurlencode $(echo -n "$qs" | openssl dgst -binary -sha256 -hmac "$key" | base64))
218 224
signed="${url}?$qs&amp;signature=$sig"
219 225
echo "$signed"
220
-