2012-10-01 16 views
8

Qual è il modo migliore per progettare la seguente soluzione per l'autenticazione?Cross Platform ServiceStack Authentication

Possiedo un livello di servizio REST ServiceStack standalone (non integrato con MVC). Questo servizio è il punto di accesso a tutti i miei dati. Nessun dato è memorizzato sul client.

Possiedo più client (sito ASP.Net MVC 4, app MonoTouch, app MonoDroid, app Silverlight, app MonoMac, ecc.).

vorrei fornire l'autenticazione (Facebook, Twitter, ecc) a livello di servizi, tra cui la conservazione gli utenti nel MongoDBAuthRepository, ma consentono ai clienti di fornire l'interfaccia utente di accesso (voglio questo?). Ad esempio, per il sito MVC, vorrei integrare il servizio di autenticazione remoto ServiceStack (incluso Facebook, Twitter), con il sistema di autenticazione MVC. Sembra che l'autentica autenticazione dovrebbe avvenire sul lato del servizio, ma il lato client deve mantenere la risposta di autenticazione.

Ho letto il wiki, ho guardato su SocialBootstrap e ho letto il forum, ma sono ancora confuso su come questo dovrebbe funzionare in modo distribuito.

risposta

5

Per le opzioni OAuth come Twitter + Facebook, l'autenticazione dovrebbe avvenire in un browser poiché richiedono entrambi i reindirizzamenti dal rispettivo provider di autenticazione per acquisire la verifica attendibile da ciascun utente. Alcune app mobili lo fanno incorporando un widget del browser per Twitter + FB Auth.

Una volta che l'utente viene autenticato con Twitter + Facebook e le credenziali nella stessa sessione autenticata, ServiceStack's AuthProviders unisce automaticamente tutte le informazioni di autorizzazione nello stesso account. In seguito, potrai accedere con 1 provider di autenticazione ma accedere alle informazioni disponibili su tutti 3. Il progetto SocialBootstrapApi fornisce un esempio di questo.

+1

La parte che mi manca è, se faccio l'autenticazione FB/Twitter nel browser (e di conseguenza, sul lato client (mvc/mobile/etc)), come faccio a passare quell'autorizzazione al servizio remoto di ServiceStack ? –

+1

Il ServiceClient deve solo specificare il cookie 'ss-pid' che può essere assegnato implicitamente utilizzando BasicAuth/DigestAuth o assegnato esplicitamente con una chiamata diretta al servizio'/auth/* '. Altrimenti puoi fisicamente aggiungere il cookie al ServiceClient, è solo un guidSessionId codificato base62 guid – mythz

+4

Ok, ho cercato di farlo funzionare, ma penso che mi manchi * ancora * qualcosa. L'utente accede a Twitter/Facebook sul telefono, quindi prova a registrarsi con il mio servizio ServiceStack o ad accedere a un servizio che richiede l'autenticazione. Quale provider di autenticazione sul servizio? Quali parametri passare? Quale password impostare? http://imageshack.us/a/img84/5415/servicestackoauthfromcl.png http://imageshack.us/a/img607/5415/servicestackoauthfromcl.png –