2012-01-05 14 views
9

He seguido el tutorial de Nick Johnson en Authenticating against App Engine from Androidautentica en App Engine de aplicación para Android con acceso federado (OpenID)

¿Hay alguna forma de obtener el mismo flujo de trabajo (sin signin web) con el acceso federado (aunque el apoyo es limitado a cuentas de Google)?

[Editar] Información adicional

La configuración actual incluye:

  • App Engine de UserService configurado para acceso federado (openId..gmail, AOL, MySpace, ...?)
  • Facebook (OAuth)
  • Twitter (OAuth)

Todos los tipos de autenticación se envuelven en un UserService, por lo que puedo llamar al UserService.getCurrentUser() (similar al servicio de usuario de Appengine, pero es compatible con Twitter y Facebook).

Las cuentas pueden tener varios métodos de autenticación vinculados entre sí.

Hasta ahora, los clientes están basados ​​en la web y las cosas funcionan bien. : D

me gustaría:

  1. Añadir una API pública (para web y aplicaciones móviles nativas),
  2. utilizar la API internamente para aplicaciones móviles nativas.

¿Cuáles son las opciones?

Estaba pensando en limitar la autenticación a las cuentas de Google para la aplicación de Android, con la esperanza de evitar la pantalla de inicio de sesión en la web. Aun así, sería bueno apoyar Facebook y Twitter para la API web.

Respuesta

4

No, OpenID es un estándar de autenticación basado en navegador: se basa en que el usuario se dirija a la página de autenticación externa y luego a la página de la aplicación.

Puede hacerlo a través de WebView dentro de Dialog para una experiencia de usuario fluida. Consulte el proyecto de código abierto LeanEngine para ver una implementación de ejemplo: server y client. El servidor es un poco complicado ya que admite el inicio de sesión de Facebook y OpenID. El inicio de sesión único de OpenID sería más simple. Básicamente, solo necesitas el ejemplo del cliente.

Sin embargo, si no necesita OpenID y está dispuesto a limitar a sus usuarios a la cuenta de Google, puede usar Google ClientLogin API. Un example usage.

+0

¡Gracias por la información! –

+0

¿Volver a la opción de autenticación predeterminada de App Engines (API de cuentas de Google) es la única forma de utilizar ClientLogin? Si hago esto, podría usar una biblioteca de terceros para OpenId. –

+0

LeanEngine parece útil ~ ¿Utiliza el servicio de usuario de AppEngine? ¿Se puede usar para un REST Api? –

3

He estado investigando este tema durante varias semanas y finalmente vi luz al final del túnel. Espero que al menos puedas obtener algunos consejos de mi investigación. Primero, me acabo de dar cuenta (http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing) que OpenID y OAuth no son lo mismo, aunque podrían ser utilizados en conjunción. Mi aplicación de Google App Engine está configurada con la API de Cuentas de Google, y actualmente solo tengo un cliente de Android. Soy seguidor religioso del famoso blog de Nick Johnson que mencionaste anteriormente.Entonces, utilicé la instancia de AccountManager en el cliente de Android para autenticar sin problemas con mi aplicación de App Engine, sin pedirle al usuario las credenciales, y sin redireccionar a un navegador/webview, etc.

Al igual que desea abrir una API pública para su aplicación GAE, también quiero expandir mi base de clientes para tener otros clientes como clientes basados ​​en web, API de Python, clientes de iOS, etc., y ninguno de estos tiene este HandManager útil. Entonces, OAuth es la elección obvia. He aquí un artículo de Ikai Lan del equipo de Google App Engine que demuestra el uso de un cliente Python mediante OAuth para autenticar contra un GAE aplicación: http://ikaisays.com/2011/05/26/setting-up-an-oauth-provider-on-google-app-engine/

Lo curioso es que pensé que el uso de Oauth al Cliente correspondiente configuración de la GAE aplicación con inicio de sesión de OpenID/Federated. Pero este no es el caso. Entonces la solución para mí, y probablemente también para usted, es simple: en el cliente de Android, use AccountManager por cada blog de Nick. Y en otros clientes, use Oauth y redirija al usuario a la página de cuentas de Google para habilitar la autenticación (consulte el artículo de Ikai Lan del que hablé en el párrafo anterior).

En pocas palabras, aunque pueda evitar el inicio de sesión basado en web en un cliente de Android, pero no en ningún otro lado. Tienes que autenticar a un usuario al menos una vez, de alguna manera. Esperemos que el inicio de sesión basado en el navegador ocurra solo la primera vez, y el navegador almacena en caché futuras solicitudes.

¡Buena suerte!

+0

Tengo una actualización después de implementar (casi con éxito) el inicio de sesión de Oauth desde mi cliente de Android comunicando con mi aplicación GAE python. Utilicé google-java-client-api v1.6 en el cliente de Android (como se describe aquí: http://fabiouechi.blogspot.com/2011/11/using-google-oauth-java-client-to.html.) para enviar datos específicos de aplicaciones de mi cliente de Android, descubrí que no puedo usar datos codificados en URL. Así que utilicé application/json. Más detalles en mi pregunta de stackoverflow: http://stackoverflow.com/questions/ 8870670/using-google-api-java-client-on-android-a-post-request-does-not-seem-to-authent – Shiprack

+0

único problema es que GAE NO ES GRATIS más. La política de google es similar a esa de un traficante de drogas en la puerta de la escuela: consigue a los niños enganchados gratis y luego comienza a cobrarles por ello. –

+4

Veo el espíritu de lo que dices. Pero GAE nunca fue gratis. Solían cobrar en función de las horas de uso de la CPU, y ahora cobran en función de las horas de Instancia (similar a cómo carga Amazon S3). Por lo tanto, si usted fuera una aplicación intensiva de CPU, probablemente vería que su carga no cambia para nada. Pero la gran mayoría de las aplicaciones Las duplicaciones son muy intensas en E/S , y habrían visto un aumento en sus costos. Desde ese punto de vista, sí, GAE tenía un enfoque de cebo y cambio. Pero todos lo hacen, ¿verdad? Cell carriers, DSL, proveedores de cable ... gimnasios (¿primeros 3 meses gratis?) – Shiprack

Cuestiones relacionadas