setaccesstype secret refreshtoken playground google authentication oauth-2.0 single-page-application google-oauth

authentication - secret - refreshtoken api google



Inicie sesión en la aplicación de una sola página con la autenticación de Google y Google Oauth 2.0 (1)

Si todo lo que necesita es la dirección de correo electrónico del usuario, entonces sería mejor que use OpenID en lugar de OAuth. OAuth proporciona acceso a la cuenta y los servicios de un usuario, con alcance a un recurso específico o conjunto de recursos. OpendID está diseñado solo para iniciar sesión en un servicio externo. A continuación, puede extraer la identificación y la dirección de correo electrónico del usuario desde el inicio de sesión de OpenID. Nota: La ID siempre se enviará pero la dirección de correo electrónico se debe solicitar explícitamente durante la autenticación.

Google también es compatible con un esquema híbrido OpenID + OAuth que le permite incluir solicitudes de OAuth en la parte superior de un inicio de sesión de OpenID si hay algún recurso que necesita para autenticarse. Eche un vistazo al documento de autenticación para tener una idea de cómo funcionan ambos protocolos y cuál es mejor para su escenario.

Una vez que haya devuelto la dirección de correo electrónico, probablemente no deba conservarla en una cookie. La forma normalmente recomendada de manejarlo es agregarlo como un parámetro de sesión. De esta forma, solo la cookie de sesión se almacena en el cliente y el servidor puede usarla para encontrar los valores que necesita. Esta respuesta tiene una buena explicación de las diferencias y cuándo quieres usar sesiones versus cookies.

Estamos desarrollando una aplicación de JavaScript con base de clientes completa y necesitamos autenticar a nuestros usuarios para tener acceso a las partes internas.

Como encontré en la búsqueda, podemos externalizar nuestro mecanismo de autenticación y usar cuentas de Google para eso. Aprendí de este sitio https://developers.google.com/accounts/docs/OAuth2Login : cómo tratar con la API de Google y el mecanismo para la autenticación .

En pocas palabras, necesitamos:

  • enviar solicitud a google url con parámetros para solicitar al usuario que permita a SPA utilizar sus datos personales
  • en caso de éxito obtenemos una ficha de Google
  • podemos usar este token para acceder a la API que nos pidieron y trabajar con ella.

Esto se describe bien y lo entiendo y tengo algún código JS para hacerlo realidad.

Lo que no entiendo

Tengo una aplicación con sus datos privados. Deseo utilizar el correo electrónico del usuario como inicio de sesión o ID de usuario (no importa cómo llamarlo) para acceder a las partes internas de la aplicación, como tareas creadas por el usuario, perfil del usuario, etc. Para mostrar las tareas creadas por el usuario en mi SPA Necesito una base de datos de consulta con el correo electrónico del usuario.

Me imagino el próximo escenario:

  • usuario haga clic en Login with Google botón Login with Google
  • obtenemos un token, esto significa que el usuario fue autenticado con éxito
  • persistimos usuario y su correo electrónico para trabajar con SPA
  • cuando el usuario hace clic en Logout borramos todos los datos de acceso

¿Dónde debería persistir esta información?

En el caso de la Forms Authentication de Forms Authentication entiendo que pasamos el login / password al servidor y si coinciden con la base de datos, creamos Forms Ticket y lo almacenamos en una cookie .

¿Hay algún caso similar con la autorización de Google? Si almaceno el correo electrónico del usuario en una cookie, creo que no es muy bueno por razones de seguridad. Si guardo un token, no estoy seguro de por qué lo necesito y cómo usarlo en mi SPA, no utilizaré ninguna API de Google después de la autenticación.

¿Tiene algún ejemplo de caso cómo construimos nuestro proceso en casos similares?

Gracias.