2012-10-01 38 views
8

¿Cuál es la mejor manera de diseñar la siguiente solución para la autenticación?Autenticación multiplataforma ServiceStack

Tengo una capa de servicio REST ServiceStack independiente (no integrada con MVC). Este servicio es el punto de entrada a todos mis datos. No se almacenan datos en el cliente.

Tengo varios clientes (sitio ASP.Net MVC 4, aplicación MonoTouch, aplicación MonoDroid, aplicación Silverlight, aplicación MonoMac, etc.).

Me gustaría proporcionar autenticación (Facebook, Twitter, etc.) en el nivel de servicio, incluido el almacenamiento de los usuarios en MongoDBAuthRepository, pero permitir a los clientes proporcionar la IU de inicio de sesión (¿deseo esto?). Por ejemplo, para el sitio MVC, me gustaría integrar el servicio de autenticación ServiceStack remoto (que incluye Facebook, Twitter) con el sistema de autenticación de MVC. Parece que la autenticación real debería ocurrir en el lado del servicio, pero el lado del cliente necesita aferrarse a la respuesta de autenticación.

He leído la wiki, he mirado SocialBootstrap y leído el foro, pero todavía estoy confundido sobre cómo se supone que debe funcionar de forma distribuida.

Respuesta

5

Para las opciones de OAuth como Twitter + Facebook, su autenticación debe realizarse en un navegador, ya que cada uno de ellos requiere redirecciones de su respetado proveedor de autenticación para capturar la verificación confiable de cada usuario. Algunas aplicaciones móviles hacen esto al incorporar un widget de navegador para Twitter + FB Auth.

Una vez que un usuario está autenticado con Twitter + Facebook y Credenciales en la misma sesión autenticada, ServiceStack's AuthProviders fusiona automáticamente toda la información de autenticación en la misma cuenta. Entonces, más adelante podrá iniciar sesión con 1 proveedor de autenticación, pero tendrá acceso a la información disponible en todos los 3. El proyecto SocialBootstrapApi proporciona un ejemplo de esto.

+1

La parte que me falta es que si realizo la autenticación FB/Twitter en el navegador (y en consecuencia, en el cliente (mvc/mobile/etc)), ¿cómo paso esa autenticación al servicio remoto ServiceStack? ? –

+1

El cliente de servicio solo necesita especificar la cookie 'ss-pid' que se puede asignar implícitamente usando BasicAuth/DigestAuth o explícitamente asignada con una llamada directa al servicio'/auth/* '. De lo contrario, puede agregar físicamente la cookie al ServiceClient, es solo una base62 AuthSessionId guid codificado – mythz

+4

Ok, he estado tratando de hacer que esto funcione, pero creo que * todavía * me falta algo. El usuario inicia sesión en twitter/facebook en el teléfono y luego intenta registrarse con mi servicio ServiceStack o acceder a un servicio que requiere autenticación. ¿Qué proveedor de Auth en el servicio? ¿Qué parámetros aprobar? ¿Qué contraseña configurar? http://imageshack.us/a/img84/5415/servicestackoauthfromcl.png http://imageshack.us/a/img607/5415/servicestackoauthfromcl.png –