Ativar, desativar e usar políticas de senha
Este documento mostra como definir políticas de senha para melhorar a força da senha de usuários novos e atuais.
Se você quiser definir uma política de senha no console do Firebase, consulte Definir uma política de senha.
Visão geral
Com elas, é possível melhorar a segurança da conta aplicando requisitos de complexidade de senha. As políticas de senha são compatíveis com os seguintes requisitos de senha:
- É necessário usar letras minúsculas
- Caractere maiúsculo obrigatório
- Caractere numérico obrigatório
- É necessário um caractere não alfanumérico
- Tamanho mínimo da senha (variando de 6 a 30 caracteres; o padrão é 6)
- Tamanho máximo da senha (4.096 caracteres)
Os caracteres a seguir atendem ao requisito de caracteres não alfanuméricos, se configurados:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Modos de aplicação
É possível ativar a aplicação da política de senha em dois modos:
- Exigir: não será possível se inscrever até que o usuário atualize a senha de acordo com sua política.
Notificar: os usuários podem se inscrever com uma senha que não está em conformidade com sua política. Todos os critérios ausentes necessários para atender à política são retornados. Os critérios retornados incluem:
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_PASSWORD_LENGTH
Você pode enviar essas informações ao usuário para informá-lo sobre a atualização da senha. O exemplo a seguir mostra uma resposta que contém critérios de senha ausentes:
{ "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "CJL1i2", "email": "cloudysanfrancisco@gmail.com", "displayName": "", "idToken": "ID_TOKEN", "registered": true, "userNotifications": [ { "notificationCode": "MISSING_NUMERIC_CHARACTER", "notificationMessage": "Password must contain a numeric character" }, { "notificationCode": "MISSING_NON_ALPHANUMERIC_CHARACTER", "notificationMessage": "Password must contain a non-alphanumeric character" } ] }
Os novos usuários precisam escolher uma senha que esteja em conformidade com sua política. Se você tiver usuários ativos, recomendamos não ativar o upgrade forçado no login, a menos que tenha a intenção de aplicar imediatamente a política de senha. Em vez disso, use o modo de notificação, que permite que os usuários façam login com as senhas atuais e envia notificações que detalham os requisitos que faltam na senha.
Ao ativar a aplicação, defina forceUpgradeOnSignin como true para ativar a aplicação no modo obrigatório. Defina como false para ativar a aplicação no modo de notificação.
Ativar restrição
Para aplicar uma política de senha, siga estas etapas:
- Se ainda não tiver feito isso, configure o login por e-mail e senha.
Para aplicar uma política de senha no nível do projeto, siga estas etapas:
Console do Firebase
No console do Firebase, acesse a página Configurações de autenticação.
Selecione a guia Política de senha.
Configure os requisitos de nível de segurança da senha selecionados.
Escolha o modo de aplicação (Exigir ou Notificar) e se quer forçar upgrades de senha no login.
Clique em Salvar.
REST
No Google Cloud console, imprima um token de acesso para o ID do projeto usando o
gcloud auth print-access-tokencomando:gcloud auth print-access-token --project=PROJECT_IDAtive uma política de senha usando a Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"Substitua:
ACCESS_TOKEN: o token de acesso gerado anteriormentePROJECT_ID: o ID do projetoMIN_PASSWORD_LENGTH: o comprimento mínimo de senha necessárioMAX_PASSWORD_LENGTH: o comprimento máximo de senha necessário
Para aplicar uma política de senha no nível do locatário, siga estas etapas:
REST
No Google Cloud console, imprima um token de acesso para o ID do projeto usando o
gcloud auth print-access-tokencomando:gcloud auth print-access-token --project=PROJECT_IDAtive uma política de senha para um locatário usando a Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"Substitua:
ACCESS_TOKEN: o token de acesso gerado anteriormentePROJECT_ID: o ID do projetoTENANT_ID: o ID do locatário em que você quer aplicar a política de senhaMIN_PASSWORD_LENGTH: o comprimento mínimo de senha necessárioMAX_PASSWORD_LENGTH: o comprimento máximo de senha necessário
Desativar aplicação
Para desativar a aplicação da política de senha no nível do projeto, siga estas etapas:
Console do Firebase
No console do Firebase, acesse a página Configurações de autenticação.
Selecione a guia Política de senha.
Desative a aplicação da política de senha.
Clique em Salvar.
REST
No Google Cloud console, imprima um token de acesso para o ID do projeto usando o
gcloud auth print-access-tokencomando:gcloud auth print-access-token --project=PROJECT_IDDesative a aplicação da política de senha usando a Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"Substitua:
ACCESS_TOKEN: o token de acesso gerado anteriormentePROJECT_ID: o ID do projeto
Para desativar a aplicação da política de senha no nível do locatário, siga estas etapas:
REST
No Google Cloud console, imprima um token de acesso para o ID do projeto usando o
gcloud auth print-access-tokencomando:gcloud auth print-access-token --project=PROJECT_IDDesative a aplicação da política de senha para um locatário usando a Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"Substitua:
ACCESS_TOKEN: o token de acesso gerado anteriormentePROJECT_ID: o ID do projetoTENANT_ID: o ID do locatário em que você quer desativar a política de senha
Aplicação no lado do cliente
As senhas podem ser validadas na política de senha do projeto ou de um locatário no lado do cliente antes do envio.
import { getAuth, validatePassword } from 'firebase/auth';
const auth = getAuth();
auth.tenantId = TENANT-ID;
const status = await validatePassword(auth, 'password').catch((error) => {
// Password couldn't be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are
// missing.