2012-03-01 21 views
7

Me gustaría un sitio web (Rails 3.1 con Devise y Omniauth) y una aplicación móvil (iOS5) para compartir la autenticación. Con esto quiero decir que me gustaría que un usuario pueda SSI al sitio con Facebook o SSI a la aplicación móvil y que la aplicación móvil hable con la API del sitio web usando las credenciales del usuario para autenticarse en el sitio web.Token de acceso compartido de Facebook entre el sitio web y la aplicación móvil

Actualmente, el lado web funciona bien con un usuario que puede SSI a una cuenta. También tengo la aplicación móvil funcionando, compatible con SSI de usuario. Ambos están usando la misma aplicación de Facebook.

Mi problema es encontrar algo compartido entre los dos que pueda usar para que la aplicación móvil se autentique en el sitio. Obviamente, ambos tienen acceso a la misma identificación de usuario, pero esto no parece muy seguro. Mi aplicación móvil tiene un token de acceso, pero esto difiere del token de acceso del sitio web, aunque se ven similares, y mi token de acceso móvil caduca mientras que mi token de acceso web no.

Web/carriles de emergencia (no real):

DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA

móvil/IOS de emergencia (no real)

BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA

El uso de Facebook access token debugger me sale el siguiente (Todo eliminado es idéntico entre tokens):

para Web/carriles de emergencia:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Web 
Scopes: email offline_access 

para el móvil/IOS:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
Metadata: {"sso":"iphone-safari"} 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Native Mobile 
Scopes: email offline_access 
+0

hola. ¿Encontraste una solución a este problema? Estoy enfrentando el mismo problema en este momento ... – alex

+1

Hola. No, desafortunadamente no. Extraño dado que parece ser un requisito bastante común. Pasé mucho tiempo buscando pero no encontré nada útil. Se mudó a otra cosa pero va a tener que resolver esto muy pronto. – Undistraction

+0

Mi aplicación no tiene requisitos de seguridad muy estrictos, pero lo que hacemos es simplemente consultar con Facebook para encontrar la identificación de usuario asociada con cada token de acceso para hacer coincidir las cuentas – JeffS

Respuesta

1

Tienes que hacer pequeños cambios en Facebook API, en autorización, cambiar de

[self authorizeWithFBAppAuth:YES safariAuth:YES]; 

Para

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 

Debido somethimes hay un problema con el símbolo cuando usted quiere auth por fbApp o Safari. Tuve el mismo problema, token en mis servicios web era diferente debido a esto.

4

Para que quede constancia, la forma en que he terminado manejando esto es pasar el token móvil al servidor y hacer que el servidor verifique la autenticidad del token. Una vez que esto esté confirmado, puedo verificar la autenticación contra mis registros usando uid y correo electrónico.

+0

Tengo la misma pregunta ahora. No entendí tu respuesta: si el token no es el mismo para iniciar sesión desde la aplicación y la web, ¿cómo lo validas? digamos uno registrado desde la aplicación, ¿cómo lo usas en las llamadas web? – Dejell

0

Un posible método para resolver esto es autenticarse a través de Facebook en el móvil y luego enviar un f_uid encriptado a la aplicación Rails que luego descifrará el f_uid y verá quién está realmente iniciando sesión en el servidor.

Cuestiones relacionadas