Quelle est la méthode standard pour générer un nonce en Python?
Quelqu'un peut-il partager les meilleures pratiques pour la création d'un nonce pour OAuth demande en Python?
source d'informationauteur charliesneath
Vous devez vous connecter pour publier un commentaire.
Voici comment python-oauth2:
Ils ont aussi:
En outre, il est cette question intitulée: "make_nonce n'est pas suffisamment aléatoire", qui propose:
Et aussi les références CVE-2013-4347. TL;DR version, utilisez
os.urandom
ou l'abstraction de l'interface (SystemRandom).J'aime mon
lambda
s—et ne veulent pas les caractères non-alphanumériques—j'ai donc utilisé ce:Voici ce que rauth. Il n'y a pas vraiment de règles strictes et rapides ici. La spec ne semble pas trop opiniâtre. Votre la contrainte de la valeur, d'être un nonce, doit être unique. Autres que que, en supposant que le fournisseur ne se plaint pas, vous pouvez utiliser quelle que soit la méthode que vous aimez.
Nonce doit être à la fois utilisé qu'une seule fois et difficile de prédire:
uuid4()
utiliseos.urandom()
qui est le mieux aléatoires que vous pouvez obtenir en python.Noter que
uuid4()
est plus difficile à prévoir queuuid1()
tandis que plus tard est plus unique au monde. Vous pouvez concaténer les deux pour atteindre ces deux objectifs:Ici sont quelques idées que j'ai pour l'emailage. Le generate_nonce vient de leur code, mais j'utilise generate_nonce_timestamp que j'ai utilisé uuid. Il me donne un hasard chaîne alphanumérique et un timbre de temps en secondes:
J'aime utiliser uuid1, puisqu'il produit de l'uuid, sur la base actuelle de l'hôte et de l'heure et a la propriété de temps que vous pouvez extraire si vous avez besoin de deux. Pour emailage, vous avez besoin de l'horodatage et le nonce.
Ici est ce que vous obtenez:
Si vous souhaitez supprimer le
-
utiliseznonce.get_hex()
.uuid1 - Générer un UUID à partir d'un ID d'hôte, le numéro de séquence, et à l'heure actuelle.
Plus sur uuid.