¿Es seguro validar un token de acceso de Google Plus Oauth 2 enviado desde el cliente para autenticar a un usuario en el server?

Me gustaría utilizar el inicio de session de Google Plus para autenticar a mis usuarios en una aplicación de iOS. He seguido la guía para iOS que se describe en https://developers.google.com/+/features/sign-in . El inicio de session en el lado del cliente funciona perfectamente con la plataforma Google +. No he entendido cómo autenticar al usuario en el lado del server .

He visto que el token de acceso en el cliente se puede validar en cierta medida en https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XYZ123 . ¿Es seguro autenticar un cliente al validar el token de acceso que el usuario envió a través de HTTPS?

¿Hay mejores soluciones al usar el button de inicio de session de Google+ en el cliente? Según lo entiendo, Google recomienda utilizar el button de inicio de session de Google+:

El button de inicio de session de Google+ es una manera fácil para que los usuarios se registren e inicien session en su aplicación. Esto le permite saber quiénes son en Google+ y crear una experiencia más personalizada para su aplicación, todo sin tener que crear otro nombre de usuario y contraseña

Respuesta corta: sí. En iOS, ese es el mejor método para hacerlo ahora mismo. Lo importante es que su verificación compruebe lo que quiere, en general:

  • El ID de cliente es un ID de cliente de su proyecto.
  • Solo usa la ID de usuario del token de acceso
  • El token no ha caducado.

El vencimiento, y otra verificación básica, se maneja automáticamente cuando llama tokeninfo. Solo asegúrese de verificar la ID del cliente y use la ID de usuario de la respuesta tokeninfo para search al usuario local.

{ "issued_to": "1234.apps.googleusercontent.com", "audience": "1234.apps.googleusercontent.com", "user_id": "104824858261236811362", "scope": "https://www.googleapis.com/auth/plus.login", "expires_in": 3584, "access_type": "online" } 

Este es un ejemplo de la respuesta. La identificación del cliente es el campo "audiencia" aquí (en realidad, también se emitió), y user_id es el ID de usuario de Google; eso es lo que debe search en su database para encontrar el usuario de la aplicación correspondiente.

En Android y en la web hay otras dos opciones: recuperar un token de ID (básicamente, un token criptográficamente firmado que contiene información similar a la que se obtiene de llamar a tokeninfo con el token de acceso), y recuperar un código (que se puede usar para cambiar por un token de acceso y un token de identificación en el lado del server). Esos dos no están actualmente disponibles en iOS, por lo que pasar el token de acceso a través de HTTPS es la mejor opción actualmente.