Autenticar usuarios con identidades externas

En esta guía de inicio rápido se muestra cómo proteger una aplicación con Identity-Aware Proxy (IAP) e identidades externas. Si combinas IAP con Identity Platform, puedes autenticar a los usuarios con una amplia gama de proveedores de identidades, como OAuth, SAML y OIDC, además de con cuentas de Google.

En esta guía de inicio rápido, protegerás una aplicación de App Engine de ejemplo mediante la autenticación de Facebook.

Antes de empezar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

    gcloud init

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Inicializa App Engine en tu proyecto:

    gcloud app create --project=project-id
    
  5. Instala Git.

  6. Instala una versión actual de Node.js.

  7. Instala la herramienta de línea de comandos de Firebase:

    npm install -g firebase-tools
    

Habilitar las APIs

Primero, habilita Identity Platform:

  1. Ve a la página Marketplace de Identity Platform en laGoogle Cloud consola.

    Ir a la página de Identity Platform Marketplace

  2. Haz clic en Habilitar Identity Platform. Aparecerá la página Identity Platform en la Google Cloud consola.

A continuación, habilita IAP:

  1. Ve a la página IAP de la consola de Google Cloud .

    Ir a la página de IAP

  2. Selecciona el mismo proyecto que usaste para Identity Platform. No se admite el uso de proyectos diferentes.

  3. Haz clic en Habilitar API.

Descargar e implementar el código de ejemplo

El código de esta guía de inicio rápido tiene dos componentes: una aplicación cliente y una aplicación de autenticación.

La aplicación cliente está protegida por compras en la aplicación. Cuando recibe una solicitud de un usuario no autenticado, la redirige a la aplicación de autenticación para verificar la identidad del usuario. Si el usuario inicia sesión correctamente, la aplicación de autenticación responde con un JSON Web Token (JWT). Para hacer una demostración, la aplicación cliente muestra el JWT.

Primero, descarga el código e implementa la aplicación cliente:

  1. Descarga el código de ejemplo:

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. Cambia al directorio de la aplicación cliente:

    cd iap-gcip-web-toolkit/sample/app
    
  3. Instala las dependencias:

    npm install
    
  4. Despliega la aplicación cliente en App Engine:

    npm run deploy
    

    La aplicación cliente se inicia en la URL:

    https://[PROJECT-ID].appspot.com
    

A continuación, despliega la aplicación de autenticación:

  1. Cambia al directorio de la aplicación de autenticación:

    cd ../authui-firebaseui
    
  2. Instala las dependencias:

    npm install
    export NODE_OPTIONS=--openssl-legacy-provider
    
  3. Configura la aplicación de autenticación para que use Firebase Hosting. Especifica el Google Cloud ID del proyecto Google Cloud que contiene la aplicación cliente protegida por IAP:

    firebase use project-id
    
  4. Despliega la aplicación:

    npm run deploy
    

    La aplicación de autenticación se inicia en la URL:

    https://[PROJECT-ID].firebaseapp.com
    

Has implementado las aplicaciones de cliente y autenticación. El siguiente paso es configurar Identity Platform e IAP.

Configurar Identity Platform

IAP usa Identity Platform para autenticar identidades externas. En esta guía de inicio rápido se usa Facebook como ejemplo, pero Identity Platform admite una amplia gama de proveedores de identidad.

Crear una aplicación de Facebook

Para autenticar a los usuarios con Facebook, necesitas un ID de aplicación y un secreto de aplicación.

  1. Inicia sesión en Facebook for Developers. Si aún no tienes una cuenta de Facebook, tendrás que crear una.

  2. Ve a la página Aplicaciones de Facebook.

  3. Haz clic en Añadir una aplicación.

  4. En el menú de la izquierda, selecciona Configuración > Básica.

  5. En el cuadro URL de la política de privacidad, introduzca cualquier URL válida. Si implementas la aplicación en producción más adelante, puedes actualizar la URL para que dirija a tu política de privacidad.

  6. Anota el ID y el secreto de la aplicación. Los necesitarás en la siguiente sección.

Añadir Facebook como proveedor de identidades

Configura Identity Platform para usar Facebook en la autenticación:

  1. Ve a la página Proveedores de identidades de la consola de Google Cloud .

    Ir a la página Proveedores de identidades

  2. Haz clic en Añadir un proveedor.

  3. Seleccione Facebook en la lista de proveedores.

  4. Introduce el ID de aplicación y el secreto de aplicación que has obtenido en la sección anterior.

  5. Haz clic en Guardar.

Configurar el URI de redirección de OAuth

Cuando Facebook termina de procesar una solicitud de la aplicación de autenticación, necesita un URI al que redirigir.

  1. Vuelve a la página Aplicaciones de Facebook y selecciona tu aplicación.

  2. En el menú de la izquierda, haga clic en Productos.

  3. Busca el producto Inicio de sesión con Facebook y haz clic en Configurar.

  4. En el menú de navegación de la izquierda, selecciona Configuración (no es necesario que completes el flujo de inicio rápido guiado).

  5. En el cuadro URIs de redirección de OAuth válidos, introduce el URI de redirección:

    https://project-id.firebaseapp.com/__/auth/handler
    

    También puedes encontrar este URI en la página de configuración del proveedor de Identity Platform.

  6. Haz clic en Guardar cambios.

Has terminado de configurar Identity Platform. Ahora puedes configurar IAP para usarlo en la autenticación.

Habilitar IAP para usar identidades externas

  1. Ve a la página IAP de la Google Cloud consola.

    Ir a la página de IAP

  2. Haz clic en la pestaña APLICACIONES.

  3. Selecciona la aplicación de App Engine de ejemplo que has desplegado anteriormente. La URL de la categoría Publicado debe tener un aspecto similar a este:

    https://project-id.appspot.com
    
  4. En la columna IAP, activa el interruptor.

  5. En el panel lateral, haz clic en Iniciar para Usar identidades externas para realizar la autorización.

  6. En Página de inicio de sesión, selecciona Proporcionaré la mía.

  7. En el campo Authentication URL (URL de autenticación), introduce la URL de la aplicación de autenticación. Debería tener un aspecto similar al siguiente:

    https://project-id.firebaseapp.com/
    

    Después de introducir la URL, la Google Cloud consola añade automáticamente tu clave de API.

  8. Marca la casilla con el nombre de tu proyecto. Debe tener a Facebook como proveedor de identidades.

  9. Haz clic en Guardar.

Has terminado de configurar las compras en la aplicación.

Probar la autenticación de usuarios

Para comprobar que IAP protege tu aplicación y autentica a los usuarios con Facebook, haz lo siguiente:

  1. Ve a la aplicación cliente de App Engine en tu navegador:

    https://project-id.appspot.com
    

    Después de una breve pantalla de carga, se te redirigirá a la página de inicio de sesión de Identity Platform.

  2. Sigue las indicaciones que aparecen en pantalla para autenticarte con Facebook.

  3. Se te redirigirá a la aplicación cliente, que mostrará el JWT devuelto por Identity Platform.

Para cerrar sesión por completo, debes cerrar sesión en la aplicación de ejemplo que has creado y en Facebook. Debes cerrar la sesión en ambas aplicaciones, ya que Firebase establece una sesión con Facebook que tiene una validez de una hora. Para obtener más información, consulta Gestionar sesiones de usuario.

¡Enhorabuena! Has desplegado correctamente una aplicación en App Engine y la has protegido con IAP e identidades externas.

Limpieza

Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Además, puede que quieras eliminar la aplicación de Facebook que has creado.

Siguientes pasos