2010-05-05 7 views
5

Ich habe eine Schiene 2.3.5 Anwendung mit einer API, die ich schützen möchte.Schienen zweibeinigen OAuth-Anbieter?

Es gibt keinen Benutzer - es ist eine App zum App-Stil Webservice (mehr wie ein Amazon-Dienst als Facebook), und so möchte ich es mit einem zweibeinigen OAuth-Ansatz implementieren.

Ich habe versucht, die OAuth-Plugin-Server-Implementierung als Start zu verwenden:

http://github.com/pelle/oauth-plugin

... aber es gebaut erwartet dreibeinigen (Web-Redirect-Flow) oauth.

Bevor ich genauer hinarbeite, um Änderungen zu machen, um Zweibeiner zu unterstützen, wollte ich sehen, ob es einen einfacheren Weg gab, oder ob jemand einen besseren Ansatz für eine Rails-App hatte, um ein zweibeiniger OAuth-Anbieter zu werden .

Antwort

8

Bisher war die einzige gute Antwort, im OAUTH-Plugin zu hacken, um diese Teilmenge der OAUTH-Interaktion zu erhalten. Seitdem wurde das oauth-plugin refactored, und jetzt können Sie es direkt verwenden, indem Sie einfach den richtigen Typ des Authentifizierungsfilters zu Ihrem Controller hinzufügen:

class ApiController < ApplicationController 

    include OAuth::Controllers::ApplicationControllerMethods 

    oauthenticate :strategies => :two_legged, :interactive => false 

    # ... 

end 
+0

gibt es mehr Dokumentation zu diesem überall? ... die zweibeinige Variante meine ich ... –

+0

Fügen Sie das oauth-plugin zu Gemfile hinzu, führen Sie 'rails g oauth_provider' aus, fügen Sie das obige zu Ihrem Controller hinzu. Wenn Sie darüber hinaus Probleme haben, kann ich Ihnen wahrscheinlich helfen. –

+1

Ich kann das nicht schaffen. Sobald ich auf die zweibeinige Strategie, interaktive falsche Option, umschalte, bekomme ich ungültige OAuth-Anforderungsfehler. Soll ich auch auf Kundenseite etwas ganz anderes machen? Ich versuche, dieses Tutorial zu folgen - http://unhandledexpression.com/2011/06/28/rails-and-oauth-plugin-part-2-the-consumer/ - und es funktioniert, um einen Anbieter/Verbraucher eingerichtet zu bekommen für 3-beinigen OAuth und ich versuche es 2-beinigen zu machen. Irgendwelche Gedanken? –

5

Ich bin mir im Moment keine Alternativen zu oauth-plugin bewusst, obwohl es auf jeden Fall lange in den Zahn und reif für einen Ersatz ist. Meine Empfehlung ist es, den oauth-Server von oauth-plugin zu generieren, dann die Abhängigkeiten aus dem Plugin zu extrahieren (die nur ein paar Module wert sind) und das Plugin zu löschen. Dann passe alles an deine Bedürfnisse an. 2-legged oauth sollte kein großes Problem sein, da es sowieso einfacher ist als 3-legged, und mein Gefühl ist, dass das oauth-plugin in diesen Tagen ohne wesentliche Modifikationen sowieso nicht verwendbar ist.

Das Fleisch von OAuth ist schon lange in das Basis-Oauth-Juwel extrahiert worden, also ist das Oauth-Plugin irgendwie in der Schwebe. Die Architektur nimmt einige ernsthafte Annahmen darüber vor, welches Authentifizierungssystem Sie verwenden, und der generierte Code ist veraltet. Für mich ist das oauth-plugin eher ein Beispiel dafür, wie man alles verkabelt, als etwas, das die meisten Seiten sofort verwenden möchten.

+0

guten Rat. Ich denke, ich werde genau das rausschmeißen, was ich vom Plugin brauche. Da die Signatur für eine zweibeinige Anfrage sehr ähnlich der Signatur bei einer anfänglichen Anfrage für ein Token aussieht, konnte ich eine zweibeinige Authentifizierung darauf aufbauen (insbesondere verify_oauth_consumer_signature). –

+0

ok - habe es funktioniert, und reinigte den Großteil des Plugins. Werde einen Grund/Zweig dafür veröffentlichen, wenn ich eine Chance bekomme. –

+0

@Andrew Irgendein Wort auf diesem bereinigte 2-beinigen Grund? Würde mich freuen, es zu leihen :) –

Verwandte Themen