2012-07-13 33 views
12

Tengo tanto una aplicación de escritorio como una aplicación móvil. Quiero usar la misma aplicación de rieles para ambos "dispositivos". En otras palabras, quiero que la aplicación móvil solicite contenidos en la aplicación de escritorio.Autenticación API y aplicación usando Devise, Doorkeeper y token OAuth2

Uso Devise for authentications (email + password). Implementé la aplicación Doorkeeper en el escritorio para generar un token Oauth2 para mi aplicación móvil.

Aquí están mis preguntas:

tengo before_filters conjuntos en mis controladores de aplicaciones de escritorio con el fin de garantizar su seguridad.

  • No estoy seguro de cómo la aplicación móvil debe compartir el token OAuth2 con Devise para ser autenticado y acceder a mis controladores protegidos?

De hecho, en este momento, es el portero quien debe verificar el token móvil en mis controladores con el código doorkeeper_for :all. Pero para hacer eso no he podido diseñar la protección before_filter :authenticate_user! ...

¿Debo guardar el token oauth en el diseño también?

¿No entiendo correctamente cómo deberían autenticarse las aplicaciones móviles con el protocolo y el protocolo OAuth2?

Thx

Respuesta

9

Esto es viejo, pero todavía no tiene una respuesta.

Essentially Devise y Doorkeeper están haciendo lo mismo, Devise autentica el uso de sesiones (o token auth si lo has habilitado) mientras Doorkeeper se autentica con tokens de OAuth enviados en cada solicitud.

Lo que es probable que desee hacer es dividir su solicitud en dos puntos de acceso, tienen un acceso de escritorio normal usando Diseñar y una API que utiliza Portero. Habilite las rutas de diseño solo para los controladores de escritorio normales y habilite las rutas de portero solo para los controladores de API.

En su API Controlador de aplicación, puede anular current_user a ser algo así como User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token. Esto coincidirá con la forma en que Devise se autentica también.

Alternativamente, si su API no tiene que usar OAuth, puede usar la configuración token_authenticable de Devise, que proporciona funciones similares a las tokens de portador OAuth.

+0

por qué no deberíamos usar la autenticación basada en token de móviles y de escritorio? – lakesare

0

no estoy seguro de si he entendido su pregunta, pero Portero bloquea su controlador completamente. No es posible acceder a través de la autenticación Devise si tiene doorkeeper_for :all en su controlador.

Necesitará un controlador independiente para compartir sus datos a través de OAuth2, como un controlador API, por ejemplo. Luego puede solicitar datos, p. a través de protocol://myapp:1234/ressource?access_token=thetoken.

¿Eso es lo que pediste? De lo contrario, aclare :)

Cuestiones relacionadas