Si tu aplicación gestiona solicitudes de usuarios, es recomendable restringir el acceso solo a los usuarios permitidos. Normalmente, los usuarios no tienen permiso de gestión de identidades y accesos en tu Google Cloud proyecto o servicio de Cloud Run.
Distinguimos dos tipos de usuarios:
- Usuarios finales: usuarios de tu aplicación que no tienen por qué pertenecer a tu organización. Normalmente, deben registrar una cuenta.
- Usuarios internos: usuarios a los que un administrador de tu organización les ha concedido acceso explícito a tu aplicación. Normalmente, pertenecen a tu organización.
Autenticar usuarios finales
Si quieres autenticar a los usuarios con correo electrónico y contraseña, número de teléfono, proveedores de redes sociales como Google, Facebook o GitHub, o un mecanismo de autenticación personalizado, puedes usar Identity Platform. Usar Firebase Authentication es similar a usar Identity Platform.
Necesitas una aplicación web o móvil pública que gestione el flujo de inicio de sesión y, a continuación, haga llamadas a la API autenticadas a un servicio de Cloud Run. Esta aplicación web pública se puede alojar en un servicio público de Cloud Run.
Para ver un tutorial completo sobre cómo usar Identity Platform para la autenticación de usuarios finales, consulta el tutorial Autenticación de usuarios finales para Cloud Run.
Añade código a tu servicio de Cloud Run para verificar tokens de ID.
En su sitio web o aplicación móvil, haga lo siguiente:
- Usa la biblioteca de cliente de autenticación de Firebase adecuada para obtener un token de ID:
- Android usa el método
GetTokenResult().getToken()
. - iOS usa el método
User.getIDTokenResult(completion:)
. - Web: usa el método
firebase.User.getIdToken()
.
- Android usa el método
- Incluye el token de ID en una cabecera
Authorization: Bearer ID_TOKEN
en la solicitud al servicio.
- Usa la biblioteca de cliente de autenticación de Firebase adecuada para obtener un token de ID:
Puede usar cualquiera de los siguientes métodos para acceder a la información del perfil de usuario:
- Usa el SDK de administrador de Firebase para hacer una solicitud de red y recuperar datos de usuario.
- Usa una biblioteca de cliente de las APIs de Google para recuperar datos de usuario con el método que mejor se adapte al tiempo de ejecución que hayas elegido.
Para ver un tutorial completo de una aplicación que usa esta técnica de autenticación, consulta el tutorial sobre la autenticación de usuarios finales en Cloud Run.
Autenticar usuarios internos
Para la autenticación de usuarios internos, usa Identity-Aware Proxy.
Para configurar Identity-Aware Proxy en un servicio de Cloud Run, consulta Configurar Identity-Aware Proxy en Cloud Run.
En el caso de las solicitudes de uso compartido de recursos entre dominios (CORS) con autenticación previa y servicios de Cloud Run autenticados, te recomendamos que configures IAP para Cloud Run en lugar de usar la autenticación de IAM. Esto te permite configurar IAP para permitir solicitudes OPTIONS no autenticadas, lo que satisface la comprobación previa del navegador y, al mismo tiempo, asegura que todas las demás solicitudes estén autenticadas.
Aunque IAP permita la solicitud OPTIONS, el código de la aplicación que implementes en Cloud Run debe gestionar la solicitud preparatoria de CORS y la solicitud real que le sigue enviando los encabezados de CORS adecuados.
Para saber cómo autenticar usuarios o cuentas de servicio en un servicio de Cloud Run protegido por Identity-Aware Proxy mediante OAuth 2.0, consulta la documentación sobre autenticación programática.