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ás lo siguiente para usar Firebase Authentication:
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.
If you're using the command line interface, you need App Services CLI to be installed and authenticated on your local system.
If you're using the Admin API, you need a MongoDB Atlas Admin API public/private key pair. The API key must have Project Owner permissions.
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 de Firebase.
Haz clic en el conmutador 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.
rutaNombre de campofirebase.identities.email
mensajes de correo electrónico
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
Configura Audience en tu ID del grupo 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.
Haz clic en Save e implementa tus 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
Add a new Custom JWT authentication provider to your App's /auth/providers.json file. Use the following configuration as a template, replacing the audience value with your Firebase Project ID. You can use the provided metadata_fields as they are or modify the mapping as you wish following the Metadata Fields documentation.
{ "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.Replace the
audiencevalue in the request body with your Firebase Project ID.
You can use the provided metadata_fields as they are or modify the mapping as you wish following the Metadata Fields documentation.
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: