Erstellen von Signatur und Nonce für OAuth (Ruby)

8

Ich möchte die SmugMug-API von meiner Anwendung aus aufrufen, um die Alben und Bilder der Benutzer zu erhalten (die Benutzer wurden über OmniAuth von Ruby authentifiziert).

Laut OAuth-API von SmugMug benötigt OAuth sechs Parameter.

Ich kann das Token mit OmniAuth bekommen, und der Zeitstempel sollte einfach sein (Time.now.to_i richtig?). Es gibt zwei Dinge, die ich nicht zu generieren weiß - die oauth_nonce und die oauth_signature.

Nach den OAuth-Dokumenten erzeuge ich die Nonce über den Zeitstempel, aber wie genau würde ich das machen? Muss es eine bestimmte Länge haben und auf bestimmte Zeichen beschränkt sein?

Und natürlich die Unterschrift. Wie würde ich ein HMAC-SHA1 Sig mit Rubin erzeugen? Ich weiß, dass das oauth-Juwel es kann, aber ich würde es lieber selbst generieren, um es mit OmniAuth zu verwenden. Wenn ich mir den Code anschaue, habe ich Probleme zu entziffern, wie der oauth-Edelstein das Sig erzeugt.

Danke für jede Hilfe.

    
kmurph79 24.12.2010, 07:33
quelle

3 Antworten

10

für die Signatur

%Vor%

Sie müssen die Nonce nicht aus dem Zeitstempel generieren, aber es kann sinnvoll sein, da der Zeitstempel offensichtlich eindeutig ist, so dass er eine gute Starteingabe für jede Randomisierungsfunktion darstellt.

Ich benutze das, (das habe ich von einer anderen Frage hier bekommen und modifiziert)

%Vor%

Sie können jedoch alles verwenden, was eine eindeutige Zeichenfolge erzeugt.

Siehe diesen Text von erikeldridge auf github und Anfängerleitfaden zu OAuth für mehr

Bearbeiten

Ich habe seither herausgefunden, dass es eine bessere Möglichkeit gibt, zufällige Strings in der Ruby-Standardbibliothek zu erzeugen, SecureRandom .

    
iain 21.01.2011, 12:11
quelle
4

Eine Nonce kann auch einfach eine große, richtige Zufallszahl sein - zum Beispiel mit Rubys SecureRandom Klasse (nicht mit 'rand'):

%Vor%

...

%Vor%

Dies erzeugt eine 16-Byte-Zufallszahl im Hex-Format.

    
JohnK 14.12.2011 15:37
quelle
-1

Warum benutzt du nicht einfach die Oauth Ruby Gems?

    
shingara 24.12.2010 08:08
quelle