Vinculación de Cuentas de Google con OAuth

Las cuentas se vinculan mediante los flujos implícitos y de código de autorización de OAuth 2.0 estándar de la industria. Tu servicio debe ser compatible con los extremos de autorización y intercambio de tokens que cumplan con OAuth 2.0.

En el flujo implícito, Google abre el extremo de autorización en el navegador del usuario. Después de que el acceso sea exitoso, se muestra un token de acceso de larga duración a Google. Este token de acceso ahora se incluye en cada solicitud enviada desde Google.

En el flujo de código de autorización, necesitas dos extremos:

  • El extremo de autorización, que presenta la IU de acceso a los usuarios que aún no accedieron. El extremo de autorización también crea un código de autorización de corta duración para registrar el acceso solicitado por los usuarios.

  • El extremo de intercambio de tokens, que es responsable de dos tipos de intercambios:

    1. Intercambia un código de autorización por un token de actualización de larga duración y un token de acceso de corta duración. Este intercambio se produce cuando el usuario pasa por el flujo de vinculación de cuentas.
    2. Intercambia un token de actualización de larga duración por un token de acceso de corta duración. Este intercambio se produce cuando Google necesita un nuevo token de acceso porque venció.

Elige un flujo de OAuth 2.0

Aunque el flujo implícito es más fácil de implementar, Google recomienda que los tokens de acceso emitidos por el flujo implícito nunca venzan. Esto se debe a que el usuario se ve obligado a vincular su cuenta de nuevo después de que un token caduque con el flujo implícito. Si necesitas el vencimiento del token por razones de seguridad, te recomendamos que uses el flujo de código de autorización en su lugar.

Pautas de diseño

En esta sección, se describen los requisitos de diseño y las recomendaciones para la pantalla del usuario que alojas en los flujos de vinculación de OAuth. Una vez que la app la llama, tu plataforma le muestra al usuario un acceso a la página de Google y a la pantalla de consentimiento de vinculación de la cuenta. Cuando el usuario da su consentimiento para vincular las cuentas, se lo redirige a la app de Google.

En esta figura, se muestran los pasos para que un usuario vincule su Cuenta de Google a tu sistema de autenticación. La primera captura de pantalla muestra vínculos iniciados por el usuario desde tu plataforma. En la segunda, se muestra el acceso del usuario a Google, mientras que la tercera muestra el consentimiento y la confirmación para vincular su Cuenta de Google con tu app. En la última captura de pantalla, se muestra una cuenta de usuario vinculada correctamente en Google app.
Figura 1: Cuenta de vinculación de usuarios que accede a Google y a las pantallas de consentimiento.

Requisitos

  1. Debes comunicar que la cuenta del usuario se vinculará a Google, no a un producto de Google específico, como Google Home o el Asistente de Google.

Recomendaciones

Te recomendamos que hagas lo siguiente:

  1. Muestra la Política de Privacidad de Google. Incluye un vínculo a la Política de Privacidad de Google en la pantalla de consentimiento.

  2. Datos que se compartirán. Utiliza un lenguaje claro y conciso para indicarle al usuario qué datos de Google requiere y por qué.

  3. Llamado a la acción claro. Indica un llamado a la acción claro en tu pantalla de consentimiento, como "Aceptar y vincular". Esto se debe a que los usuarios deben comprender qué datos deben compartir con Google para vincular sus cuentas.

  4. Capacidad de cancelación. Proporciona a los usuarios una forma de regresar o cancelar si deciden no vincularse.

  5. Borrar el proceso de acceso Asegúrate de que los usuarios tengan un método claro para acceder a su Cuenta de Google, como los campos para su nombre de usuario y contraseña, o para acceder con Google.

  6. Capacidad de desvinculación. Ofrece un mecanismo para que los usuarios se desvinculen, como una URL que dirige a la configuración de su cuenta en tu plataforma. Como alternativa, puedes incluir un vínculo a la Cuenta de Google en la que los usuarios puedan administrar su cuenta vinculada.

  7. Capacidad para cambiar la cuenta de usuario Sugerir un método para que los usuarios cambien sus cuentas Esto es especialmente beneficioso si los usuarios tienden a tener varias cuentas.

    • Si un usuario debe cerrar la pantalla de consentimiento para cambiar de cuenta, envía un error recuperable a Google a fin de que el usuario pueda acceder a la cuenta deseada con la vinculación de OAuth y el flujo implícito.
  8. Incluya su logotipo. Muestre el logotipo de su empresa en la pantalla de consentimiento. Usa tus lineamientos de estilo para ubicar tu logotipo. Si también deseas mostrar el logotipo de Google, consulta Logotipos y marcas.

Crea el proyecto

Para crear tu proyecto y usar la vinculación de cuentas, sigue estos pasos:

  1. Go to the Google API Console.
  2. Haz clic en Crear proyecto .
  3. Ingrese un nombre o acepte la sugerencia generada.
  4. Confirme o edite los campos restantes.
  5. Haz clic en Crear .

Para ver su ID de proyecto:

  1. Go to the Google API Console.
  2. Encuentra tu proyecto en la tabla de la página de inicio. El ID del proyecto aparece en la columna ID .

El proceso de vinculación de cuentas de Google incluye una pantalla de consentimiento que indica a los usuarios la aplicación que solicita acceso a sus datos, qué tipo de datos están solicitando y las condiciones correspondientes. Deberás configurar la pantalla de consentimiento de OAuth antes de generar un ID de cliente de la API de Google.

  1. Abre la página Pantalla de consentimiento de OAuth de la consola de APIs de Google.
  2. Si se te solicita, selecciona el proyecto que acabas de crear.
  3. En la página "Pantalla de consentimiento de OAuth", completa el formulario y haz clic en el botón "Guardar".

    Nombre de la aplicación: Es el nombre de la aplicación que solicita el consentimiento. El nombre debe reflejar tu aplicación con exactitud y ser coherente con el nombre que los usuarios ven en otros lugares. El nombre de la aplicación se mostrará en la pantalla de consentimiento de la vinculación de cuentas.

    Logotipo de la aplicación: Es una imagen en la pantalla de consentimiento que ayudará a los usuarios a reconocer tu app. El logotipo se muestra en la pantalla de consentimiento de vinculación de cuentas y en la configuración de la cuenta.

    Correo electrónico de asistencia: Permite que los usuarios se comuniquen contigo si tienen preguntas sobre su consentimiento.

    Alcances para las APIs de Google: los permisos permiten que tu aplicación acceda a los datos privados de Google de tu usuario. Para el caso de uso de la vinculación de Cuentas de Google, el alcance predeterminado (email, profile, openid) es suficiente; no necesitas agregar ningún alcance sensible. Por lo general, se recomienda solicitar alcances de forma incremental cuando se requiere acceso, en lugar de hacerlo de forma anticipada. Más información

    Dominios autorizados: Para protegerlos a ti y a tus usuarios, Google solo permite que las aplicaciones que se autentiquen con OAuth usen dominios autorizados. Los vínculos de tus aplicaciones deben estar alojados en dominios autorizados. Más información

    Vínculo a la página principal de la aplicación: Es la página principal de tu aplicación. Debe estar alojado en un dominio autorizado.

    Vínculo a la Política de Privacidad de la aplicación: Se muestra en la pantalla de consentimiento de la vinculación de la Cuenta de Google. Debe estar alojado en un dominio autorizado.

    Vínculo de las Condiciones del Servicio de la aplicación (opcional): Se debe alojar en un dominio autorizado.

    Figura 1: Pantalla de consentimiento de vinculación de Cuentas de Google para una aplicación ficticia, Tunery

  4. Revisa el "Estado de verificación" y, si es necesario verificar tu aplicación, haz clic en el botón "Enviar para verificación" a fin de enviarla para que se verifique. Consulta los requisitos de verificación de OAuth para obtener más información.

Implementa tu servidor OAuth

Para apoyar el flujo implícita OAuth 2.0, el servicio hace un punto final de autorización a disposición por HTTPS. Este punto final es responsable de la autenticación y la obtención del consentimiento de los usuarios para el acceso a los datos. El extremo de autorización presenta una IU de inicio de sesión para los usuarios que aún no han iniciado sesión y registra el consentimiento para el acceso solicitado.

Cuando una aplicación de Google necesita llamar a una de las API autorizadas de su servicio, Google utiliza este punto final para obtener permiso de sus usuarios para llamar a estas API en su nombre.

Una sesión típica de flujo implícito de OAuth 2.0 iniciada por Google tiene el siguiente flujo:

  1. Google abre su punto final de autorización en el navegador del usuario. El usuario inicia sesión, si aún no lo ha hecho, y le otorga permiso a Google para acceder a sus datos con su API, si aún no lo ha otorgado.
  2. Su servicio crea un token de acceso y vuelve a Google. Para hacerlo, redirija el navegador del usuario a Google con el token de acceso adjunto a la solicitud.
  3. Google llama a las API de su servicio y adjunta el token de acceso con cada solicitud. Su servicio verifica que el token de acceso otorgue a Google la autorización para acceder a la API y luego completa la llamada a la API.

Manejar solicitudes de autorización

Cuando una aplicación de Google necesita realizar la vinculación de cuentas a través de un flujo implícito de OAuth 2.0, Google envía al usuario a su punto final de autorización con una solicitud que incluye los siguientes parámetros:

Parámetros de punto final de autorización
client_id El ID de cliente que asignó a Google.
redirect_uri La URL a la que envía la respuesta a esta solicitud.
state Un valor contable que se devuelve a Google sin cambios en el URI de redireccionamiento.
response_type El tipo de valor que se devolverá en la respuesta. Para el flujo implícita OAuth 2.0, el tipo de respuesta es siempre token .
user_locale La configuración de idioma en la cuenta de Google RFC5646 formato utilizado para localizar su contenido en el idioma preferido del usuario.

Por ejemplo, si su punto final de autorización está disponible en https://myservice.example.com/auth , una solicitud puede tener un aspecto como el siguiente:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE

Para que su punto final de autorización maneje las solicitudes de inicio de sesión, siga los siguientes pasos:

  1. Verificar los client_id y redirect_uri valores para evitar la concesión de acceso a las aplicaciones cliente no deseados o mal configurados:

    • Confirmar que el client_id coincide con el ID de cliente que ha asignado a Google.
    • Confirmar que la URL especificada por el redirect_uri parámetro tiene la siguiente forma:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Compruebe si el usuario ha iniciado sesión en su servicio. Si el usuario no ha iniciado sesión, complete el proceso de inicio de sesión o registro de su servicio.

  3. Genere un token de acceso para que Google lo utilice para acceder a su API. El token de acceso puede ser cualquier valor de cadena, pero debe representar de forma única al usuario y al cliente para el que es el token y no debe ser adivinable.

  4. Enviar una respuesta HTTP que redirige el navegador del usuario a la URL especificada por el redirect_uri parámetro. Incluya todos los siguientes parámetros en el fragmento de URL:

    • access_token : El token de acceso que acaba de generar
    • token_type : La cadena bearer
    • state : El valor de estado no modificado de la solicitud original

    El siguiente es un ejemplo de la URL resultante:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

OAuth 2.0 manejador de redirección de Google recibe el token de acceso y confirma que el state valor no ha cambiado. Una vez que Google ha obtenido un token de acceso para su servicio, Google adjunta el token a las llamadas posteriores a las API de su servicio.

处理用户信息请求

用户信息终端是一个OAuth 2.0保护的资源,对链接的用户返回的权利要求。实现和托管 userinfo 端点是可选的,以下用例除外:

从您的令牌端点成功检索访问令牌后,Google 会向您的 userinfo 端点发送请求,以检索有关链接用户的基本个人资料信息。

userinfo 端点请求标头
Authorization header Bearer 类型的访问令牌。

例如,如果你的用户信息终端可在https://myservice.example.com/userinfo ,请求看起来像下面这样:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

要让您的 userinfo 端点处理请求,请执行以下步骤:

  1. 从 Authorization 标头中提取访问令牌并返回与访问令牌关联的用户的信息。
  2. 如果访问令牌无效,返回HTTP 401错误未经授权使用的WWW-Authenticate响应头。下面是一个userinfo的错误响应的一个示例:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    如果一个401未经授权,或任何其它不成功错误响应在关联过程返回时,误差将是不可恢复的,所检索的令牌将被丢弃,并且用户将必须再次启动链接过程。
  3. 如果访问令牌是有效的,回国与以下JSON对象在HTTPS响应的身体HTTP 200回应:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    
    如果你的用户信息端点返回一个HTTP 200成功响应,检索到的令牌和索赔登记针对用户的谷歌帐户。

    用户信息端点响应
    sub标识系统中用户的唯一 ID。
    email用户的电子邮件地址。
    given_name可选:用户的名字。
    family_name可选:用户的姓氏。
    name可选:用户的全名。
    picture可选:用户的档案图片。

Cómo validar la implementación

Puede validar su aplicación mediante el uso de la Zona de juegos OAuth 2.0 herramienta.

En la herramienta, siga los siguientes pasos:

  1. Haga clic en Configuración de para abrir la ventana de configuración de OAuth 2.0.
  2. En el campo de flujo de OAuth, seleccione el lado del cliente.
  3. En el campo de OAuth puntos finales, seleccione Personalizar.
  4. Especifique su punto final de OAuth 2.0 y el ID de cliente que asignó a Google en los campos correspondientes.
  5. En la sección Paso 1, no seleccione ninguna alcances de Google. En su lugar, deje este campo en blanco o escriba un ámbito válido para su servidor (o una cadena arbitraria si no utiliza ámbitos OAuth). Cuando haya terminado, haga clic en Autorizar API.
  6. En las secciones Paso 2 y el Paso 3, vaya a través del flujo de OAuth 2.0 y verificar que cada paso funciona como se pretende.

Puede validar su aplicación mediante el uso de la cuenta de Google Vinculación demostración herramienta.

En la herramienta, siga los siguientes pasos:

  1. Haga clic en el Inicio de sesión con el botón de Google.
  2. Elija la cuenta que desea vincular.
  3. Ingrese la identificación del servicio.
  4. Opcionalmente, ingrese uno o más ámbitos para los que solicitará acceso.
  5. Haga clic en Inicio de demostración.
  6. Cuando se le solicite, confirme que puede dar su consentimiento y rechazar la solicitud de vinculación.
  7. Confirme que se le redirige a su plataforma.