Je me sers d'une classe OAuthBase trouvé HERE dans mon SSIS 2008 C# Script Components (.NET 3.5). Cela fonctionne correctement, mais j'ai récemment rencontré le problème suivant: si j'exécute plusieurs composants de script dans la même tâche de flux de données, en utilisant la méthode GenerateNonce dans la classe OAuthBase ci-dessus, je me retrouve avec le même nonce (nombre aléatoire).fil générateur de nombres aléatoires sécurité/string pour un nonce OAuth en C#
Voici un extrait de la classe OAuthBase qui génère le nonce:
using System;
using System.Security.Cryptography;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace OAuth {
public class OAuthBase {
....snip......
protected Random random = new Random();
public virtual string GenerateNonce() {
// Just a simple implementation of a random number between 123400 and 9999999
return random.Next(123400, 9999999).ToString();
}
}
}
Dans chaque composant de script que je suis en utilisant ce code C# pour lancer la classe et générer un nonce:
OAuthBase oAuth = new OAuthBase();
string nonce = oAuth.GenerateNonce();
A partir de mes recherches, je pense que cela est lié au fait que ce n'est pas thread safe? Je ne suis pas totalement sûr.
Je ne suis en mesure d'exécuter .NET 3.5 dans SSIS 2008, donc je sais certains des nouveaux trucs introduites dans .NET 4.0, je ne peux pas utiliser.
Toutes les idées sur la façon dont je peux soit modifier la classe OAuthBase et/ou mon code C# composant script?
Ce nonce a très peu de valeurs possibles. Même le bug de threading de côté n'est pas unique par tous les moyens. – usr
@usr - merci. Je me demandais à ce sujet. Peut-être que je fais juste quelque chose comme 'return Guid.NewGuid.ToString();'? Je ne suis pas tout à fait sûr combien de temps mon nonce peut être (frappant Magento REST API). – jared