Autenticação JWT com Firebase (JWT personalizado)
Nesta página
Você pode configurar o provedor de autenticação de personalizado JSON web token para autenticar usuários que você gerencia com o Autenticação de base de fiação.
Antes de começar
Você precisará do seguinte para usar a Autenticação Firebase:
Um projeto do Firebase com Autenticação configurada. Para saber mais, consulte a Autenticação Firebase documentação.
Um aplicativo de serviços de aplicativos que ainda não usa a autenticação JWT customizada. Para saber como criar um novo App Services, consulte Criar um Aplicativo.
Se você estiver usando a interface de linha de comando, precisará que a App Services CLI seja instalada e autenticada em seu sistema local.
Se você estiver usando a API de administrador, precisará de um par de chaves pública/privada da API de administração do MongoDB Atlas. A chave de API deve ter permissões de Proprietário do Projeto .
Configurar o provedor de autenticação JWT personalizado
Você pode configurar a autenticação JWT personalizada a partir da interface do usuário ou modificando os arquivos de configuração subjacentes diretamente com a CLI ou a API Admin. Escolha seu método preferido abaixo.
No menu de navegação esquerdo, clique em Authentication. Em seguida, clique na aba Authentication Providers e selecione o fornecedor Custom JWT .
Agora você pode configurar o provedor de autenticação JWT Personalizado para trabalhar com seu projeto Firebase.
Clique no botão para habilitar o provedor.
Defina Verification Method como Use a JWK URI. Especifique a seguinte URL para JWK URI:
https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com Defina Metadata Fields para mapear dados do Firebase JWT para a conta de usuário correspondente do App Services.
Nenhum dos campos de metadados é obrigatório. No entanto, você pode achá-los úteis para obter informações do usuário do Firebase JWT em seu aplicativo.
Veja a seguir um mapeamento do Firebase JWT para um usuário dos Serviços de Aplicativo. Você pode adicioná-los à tabela na interface do usuário como estão ou modificar o mapeamento conforme desejar, seguindo a documentação dos campos de metadados.
CaminhoNome do campofirebase.identities.emaile-mailsfirebase.sign_in_providersignInProvideruser_idID do usuárioemail_verifiedemailVerifiedEmailEmailDefina Audience para sua ID de projeto do Firebase.
Importante
Você deve definir o público como ID do projeto do Firebase
Você deve definir Audience para usar a ID do projeto Firebase como um provedor JWT personalizado, mesmo que ele seja rotulado como opcional na interface do usuário.
Clique em Save e distribua as alterações
Execute o comando a seguir, substituindo o valor de --remote
pela ID do aplicativo cliente do seu aplicativo. Isso baixa uma cópia local dos arquivos de configuração mais recentes do seu aplicativo e navega até o diretório do arquivo de configuração, que usa o mesmo nome do seu aplicativo.
appservices pull --remote "myapp-abcde" cd myapp
Adicione um novo provedor de autenticação de JSON web token personalizado ao arquivo /auth/providers.json
do seu aplicativo. Use a seguinte configuração como modelo, substituindo o valor audience
pelo ID do projeto do Firebase. Você pode usar os metadata_fields
fornecidos como estão ou modificar o mapeamento conforme desejar, seguindo a documentação dos campos de metadados.
{ "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" } ] } }
Salve suas alterações em /auth/providers.json
. Em seguida, envie o arquivo de configuração atualizado para implantar seu aplicativo:
appservices push
Adicione um novo provedor de autenticação JWT personalizado ao seu aplicativo usando o endpoint Criar um provedor de autenticação.
Use a seguinte configuração como modelo. Certifique-se de:
Especifique o
$PROJECT_ID
e$APP_ID
do seu aplicativoInclua um token de acesso à API Admin no cabeçalho
Authorization
.Substitua o valor
audience
no corpo da solicitação pelo ID do projeto do Firebase.
Você pode usar os metadata_fields
fornecidos como estão ou modificar o mapeamento conforme desejar, seguindo a documentação dos campos de metadados.
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" } ] }'
Faça login com um JWT do Firebase
Depois de configurar o provedor de autenticação JWT personalizado para usar a Autenticação do Firebase, você poderá fazer logon no aplicativo de Serviços de Aplicativo com um JWT do Firebase.
Faça login do usuário no Firebase. Para saber como, consulte a documentaçãorelevante do Firebase SDK para sua plataforma e linguagem de programação.
Obtenha o JWT Firebase do usuário. Para saber como, consulte Recuperar tokens de ID em clientes na documentação do Firebase.
Use o Firebase JWT para se autenticar com o Atlas App Services. Você pode iniciar uma sessão por HTTP ou fazer login com um SDK. Para saber como, consulte os documentos do seu SDK: