Puede configurar el proveedor de autenticación JWT personalizado para autenticar a los usuarios que administra con Autenticación de Firebase.
Antes de comenzar
Necesitará lo siguiente para utilizar la autenticación de Firebase:
Un proyecto de Firebase con autenticación configurada. Para obtener más información, consulta la documentación de Firebase Authentication.
Una App Services App que aún no utilice autenticación JWT personalizada. Para aprender a crear una nueva aplicación de App Services, consulta Crear una aplicación.
Si está utilizando la interfaz de línea de comandos, necesita que App Services CLI esté instalado y autenticado en su sistema local.
Si usa la API de administración, necesita un par de claves pública/privada de la API de administración de MongoDB Atlas. La clave API debe tener permisos de propietario del proyecto.
Configurar el proveedor de autenticación JWT personalizado
Puedes configurar la autenticación JWT personalizada desde la interfaz de usuario o modificando directamente los archivos de configuración subyacentes con la CLI o la API de administración. Elige tu método preferido a continuación.
En el menú de navegación de la izquierda, haga clic en AuthenticationLuego haga clic en la pestaña Authentication Providers y seleccione el proveedor Custom JWT.
Ahora puedes configurar el proveedor de autenticación JWT personalizado para que funcione con tu proyecto Firebase.
Haga clic en el interruptor para habilitar el proveedor.
Establezca Verification Method en Use a JWK URI. Especifique la siguiente URL para JWK URI:
https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com Define Metadata Fields para asignar datos de Firebase JWT a la cuenta de usuario de App Services correspondiente.
Ninguno de los campos de metadatos es obligatorio. Sin embargo, pueden resultarte útiles para obtener información del usuario del JWT de Firebase en tu aplicación.
A continuación, se muestra una asignación del JWT de Firebase a un usuario de App Services. Puede agregarlos a la tabla en la interfaz de usuario tal como están o modificar la asignación según sus preferencias, siguiendo la documentación de Campos de Metadatos.
Ruta de accesoNombre de campofirebase.identities.email
correos electrónicos
firebase.sign_in_provider
Proveedor de inicio de sesión
user_id
ID de usuario
correo electrónico verificado
emailVerified
correo electrónico
correo electrónico
Establezca Audience en su ID de proyecto de Firebase.
Importante
Debes establecer la Audiencia en el ID del proyecto de Firebase
Debes Audience establecer para usar tu ID del grupo Firebase como proveedor personalizado de JWT, aunque esté marcado como opcional en la Interfaz de Usuario.
Haga clic en Save e implemente sus cambios
Ejecute el siguiente comando, reemplazando el valor de --remote
con el ID de la aplicación cliente de su aplicación. Esto descarga una copia local de los últimos archivos de configuración de su aplicación y navega al directorio de archivos de configuración, que usa el mismo nombre que su aplicación.
appservices pull --remote "myapp-abcde" cd myapp
Añade un nuevo proveedor de autenticación JWT personalizado al archivo de tu /auth/providers.json aplicación. Usa la siguiente configuración como plantilla, reemplazando el audience valor con el ID de tu proyecto de Firebase. Puedes usar los proporcionados metadata_fields tal como están o modificar la asignación según lo desees siguiendo la documentación de los campos de metadatos.
{ "custom-token": { "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": ["<Your Firebase Project ID>"], "jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [ { "required": false, "name": "firebase.identities.email", "field_name": "emails" }, { "required": false, "name": "firebase.sign_in_provider", "field_name": "signInProvider" }, { "required": false, "name": "user_id", "field_name": "userId" }, { "required": false, "name": "email_verified", "field_name": "emailVerified" }, { "required": false, "name": "email", "field_name": "email" } ] } }
Guarda los cambios en /auth/providers.json. Luego, envía el archivo de configuración actualizado para implementar tu aplicación:
appservices push
Agregue un nuevo proveedor de autenticación JWT personalizado a su aplicación mediante el punto final Crear un proveedor de autenticación.
Utilice la siguiente configuración como plantilla. Asegúrese de:
Especifica el
$PROJECT_IDy$APP_IDde tu aplicaciónIncluya un token de acceso a la API de administración en el encabezado
Authorization.Reemplace el valor
audienceen el cuerpo de la solicitud con su ID de proyecto de Firebase.
Puede utilizar los proporcionados metadata_fields tal como están o modificar la asignación como desee siguiendo la documentación de Campos de metadatos.
curl "https://services.cloud.mongodb.com/api/admin/v3.0/groups/$PROJECT_ID/apps/$APP_ID/auth_providers" \ -X "POST" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": ["<Your Firebase Project ID>"], "jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [ { "required": false, "name": "firebase.identities.email", "field_name": "emails" }, { "required": false, "name": "firebase.sign_in_provider", "field_name": "signInProvider" }, { "required": false, "name": "user_id", "field_name": "userId" }, { "required": false, "name": "email_verified", "field_name": "emailVerified" }, { "required": false, "name": "email", "field_name": "email" } ] }'
Iniciar sesión con un JWT de Firebase
Una vez que haya configurado el proveedor de autenticación JWT personalizado para usar la autenticación Firebase, puede iniciar sesión en su aplicación de App Services con un JWT de Firebase.
Inicie la sesión del usuario en Firebase. Para saber cómo, consulte la documentación del SDK de Firebase correspondiente a su plataforma y lenguaje de programación.
Obtén el JWT de Firebase del usuario. Para saber cómo, consulta "Recuperar tokens de ID en clientes" en la documentación de Firebase.
Usa Firebase JWT para autenticarte con Atlas App Services. Puedes iniciar sesión mediante HTTP o con un SDK. Para saber cómo, consulta la documentación de tu SDK: