2011-09-09 18 views
11

Queremos utilizar Google Doc API para generar documentos (en nuestra propia cuenta comercial) cuando nuestros usuarios finales realicen algunas acciones en nuestro sitio.Google API: cómo autenticar sin redirección?

El problema es que hemos tratado de implementar el protocolo OAuth 2.0, como se sugiere en la documentación del protocolo v3.0. El método de autenticación apiClient :: hace una redirección. Este es un problema importante porque nuestros usuarios no conocen el acceso a nuestra propia cuenta comercial ... y no queremos darles acceso de todos modos;)

(En otras palabras, no estamos creando una aplicación que permite a nuestros usuarios editar sus propios datos, pero para interactuar con nuestros datos, como una base de datos)

He leído que el objetivo de OAuth 2.0 era evitar que administremos la credencial de nuestros usuarios. Personalmente soy O.K. con el concepto, pero en nuestro caso, no queremos autenticarnos en la cuenta de Google de nuestros usuarios ...

Entonces, ¿cuál sería el mejor enfoque para obtener una autenticación válida sin interacción desde el final? usuario?

+2

Para el lector casual. Antes de que comiences a involucrarte con esto. Considere la implementación alternativa y menos dolorosa de codificar su nombre de usuario y contraseña de Gmail en la aplicación y trasladar Chrome a PHP para emular el inicio de sesión de un usuario.Ahora, la reescritura de una arquitectura de plugin compatible con NSAPI y una máquina virtual no será divertida, pero al menos es mejor que OAuth2, que si no leíste, el autor recomienda no utilizar http://hueniverse.com/2012/07/oauth-2 -0-and-the-road-to-hell/ –

Respuesta

16

Lo que usted describe no es cómo se diseñó OAuth de 3 patas para su uso.

OAuth de 3 patas es todo acerca de la autenticación delegada donde un usuario (que conoce su contraseña) puede otorgar acceso a recursos limitado y revocable a la aplicación. Esa aplicación nunca ve la contraseña del usuario. Hay una gran cantidad de trabajo involucrado para permitir de forma segura que la aplicación se haga pasar por el usuario.

Lo que probablemente desee es usar el flujo OAuth (de dos patas), donde las credenciales consumer_id/consumer_secret están incrustadas en su aplicación. Aquí su aplicación no se hace pasar por su usuario final y no habría redirección del navegador.

Aquí hay alguna información adicional sobre el uso de OAuth 2 patas en Google Apps: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

Y esto es una buena descripción de la 3- 2- vs OAuth patas: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

+1

Ambos enlaces son oauth1, y no es lo que se llama en OAuth2. En OAuth2 se denomina "Credenciales del cliente": http://tools.ietf.org/html/rfc6749#section-1.3.4 – drozzy

1

¿Por qué no obtener una autorización de OAuth para su cuenta comercial y que todos los usuarios usen esa cuenta? Como parece que quiere que todos accedan a los datos de una cuenta, los detalles pueden ocultarse al usuario final.

El token de acceso sería compartido por todos los usuarios y todos accederían a la misma cuenta sin autorización para la cuenta de cada usuario.

+1

Eso suena como lo que necesito, pero ¿el objetivo de OAuth no es redirigir para procesar la autenticación? ¿Cómo puedo "codificar" la credencial para evitar que el usuario final note que se ha realizado una autenticación? – FMaz008

+0

Realiza la autenticación antes que cualquier otra persona que use el sistema. Luego, almacena el token para que lo use todo el mundo. Mírelo como si todos los usuarios estuvieran compartiendo el mismo token en lugar de tener su propio token. –

+0

Hum, vale, pero eso todavía no me ayuda. Intenté implementar el protocolo y ahora todos los usuarios son redirigidos a una página donde está escrito: *** El sitio web solicita permiso para: Administrar sus documentos Ver y administrar sus documentos en Google Docs Cargar documentos nuevos (Más información). *** No quiero que mi usuario vea eso ... – FMaz008

3

Usted tendrá que utilizar una CUENTA DE SERVICIO. Básicamente, tienes acceso de codificación difícil a esta cuenta en tu aplicación de servidor. Luego usa compartir para dar acceso a la cuenta para el contenido que desea. Por ejemplo, puede compartir un documento de Google Doc o un perfil de Analytics con la CUENTA DE SERVICIO.

Aquí hay una implementación de ejemplo completa de la configuración de una cuenta de servicio, el inicio de sesión y luego su uso.

https://gist.github.com/fulldecent/6728257

+0

Sí, SO revisores. Esta es la tercera vez que publico este enlace en una respuesta. Y sí, es una respuesta válida. Otras preguntas son http://stackoverflow.com/questions/9932090/google-analytics-api-v3-authorization-to-allow-access-to-my-data/19121069#19121069 y http://stackoverflow.com/questions/13111396/access-google-calendar-events-from-with-service-account-error-access-den –