2010-05-05 20 views
5

Possiedo un'applicazione di binari 2.3.5 con un'API che desidero proteggere.Rails provider OAuth a due vie?

Non c'è un utente - è un'app per il webservice in stile app (più simile a un servizio Amazon di Facebook), e quindi mi piacerebbe implementarlo utilizzando un approccio OAuth a due vie.

Ho cercato di utilizzare il server di attuazione OAuth-plugin come inizio:

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

... ma è costruito in attesa a tre zampe (flusso di reindirizzamento web) OAuth.

Prima di approfondire le modifiche apportate per supportare due gambe, volevo vedere se esisteva un modo più semplice, o se qualcuno avesse un approccio migliore per l'applicazione di un binario da implementare come fornitore OAuth a due gambe .

risposta

8

In precedenza, l'unica buona risposta era quella di hackerare nel plugin oauth per ottenere questo sottoinsieme dell'interazione oauth. Da allora, il plugin oauth è stato refactored e ora puoi usarlo direttamente aggiungendo il giusto tipo di filtro di autenticazione al tuo controller:

class ApiController < ApplicationController 

    include OAuth::Controllers::ApplicationControllerMethods 

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

    # ... 

end 
+0

c'è più documentazione su questo ovunque? ... la variante a due gambe intendo ... –

+0

Aggiungi il plugin oauth a Gemfile, esegui 'rails g oauth_provider', aggiungi quanto sopra al tuo controller. Se hai problemi oltre a questo, posso probabilmente aiutare. –

+1

Non riesco a farlo funzionare. Non appena cambio la strategia a due zampe, opzione falsa interattiva ottengo errori di richiesta OAuth non validi. Devo fare qualcosa di molto diverso anche alla fine del cliente? Sto cercando di seguire questo tutorial - http://unhandledexpression.com/2011/06/28/rails-and-oauth-plugin-part-2-the-consumer/ - e funziona per ottenere un provider/consumer set up per OAuth a 3 zampe e sto cercando di renderlo a 2 zampe. qualche idea? –

5

Al momento non sono a conoscenza di alternative al plug-in oauth, anche se è decisamente troppo lungo per i denti e maturo per una sostituzione. La mia raccomandazione è di generare il server oauth da oauth-plugin, quindi estrarre le dipendenze dal plugin (che sono solo un paio di moduli che valgono di metodi) e buttare via il plugin. Quindi ritaglia tutto per le tue esigenze. L'oauth a due vie non dovrebbe essere un grosso problema in quanto è più semplice di 3-legged comunque, e la mia sensazione è che oauth-plugin non sia utilizzabile in questi giorni senza modifiche significative comunque.

La carne di OAuth è stata a lungo estratta nella gemma oauth di base, quindi il plugin oauth è un po 'in un limbo. L'architettura fa alcune ipotesi pesanti su quale sistema di autenticazione si sta utilizzando e il codice generato è datato. Quindi, per me, oauth-plugin è più un esempio di come collegare tutto, piuttosto che qualcosa che la maggior parte dei siti vorrebbe usare fuori dalla scatola.

+0

buon consiglio. Penso che estrarrò solo ciò di cui ho bisogno dal plugin. Dal momento che la firma per la richiesta a due vie sembra molto simile alla firma su una richiesta iniziale per un token, sono stato in grado di basare l'autenticazione a due vie su quello (verify_oauth_consumer_signature in particolare). –

+0

ok - ha funzionato e pulito la maggior parte del plugin. Rilascerò un gist/ramo per questo quando avrò una possibilità. –

+0

@Andrew Qualche parola su quello che ha ripulito l'essenza a 2 gambe? Mi piacerebbe prenderlo in prestito :) –