Ativar, desativar e usar políticas de senha
Neste documento, mostramos como definir políticas de senha para melhorar o nível de segurança da senha para 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 que ele atualize a 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 detalhando os requisitos que faltam na senha.
Ao ativar a aplicação, defina forceUpgradeOnSignin como true para ativar
a aplicação no modo de exigência. Defina como false para ativar a aplicação no modo de notificação.
Ativar aplicação
Para aplicar uma política de senha, siga estas etapas:
- Se você ainda não tiver feito isso, configure o login com 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 restrito (Exigir ou Notificar) e se quer forçar upgrades de senha no processo de login.
Clique em Salvar.
REST
No console do Google Cloud , imprima um token de acesso para o ID do projeto usando o comando
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDAtive uma política de senha usando a API Identity Toolkit:
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 que você gerou anteriormente.PROJECT_ID: ID do projeto;MIN_PASSWORD_LENGTH: o tamanho mínimo obrigatório da senhaMAX_PASSWORD_LENGTH: o tamanho máximo exigido para a senha.
Para aplicar uma política de senha no nível do locatário, siga estas etapas:
REST
No console do Google Cloud , imprima um token de acesso para o ID do projeto usando o comando
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDAtive uma política de senha para um locatário usando a API Identity Toolkit:
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 que você gerou anteriormente.PROJECT_ID: ID do projeto;TENANT_ID: o ID do locatário em que você quer aplicar a política de senhaMIN_PASSWORD_LENGTH: o tamanho mínimo obrigatório da senhaMAX_PASSWORD_LENGTH: o tamanho máximo exigido para a senha.
Desativar aplicação
Para desativar a aplicação obrigatória 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 console do Google Cloud , imprima um token de acesso para o ID do projeto usando o comando
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDDesative a aplicação da política de senha usando a API Identity Toolkit:
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 que você gerou anteriormente.PROJECT_ID: ID do projeto;
Para desativar a aplicação obrigatória da política de senha no nível do locatário, siga estas etapas:
REST
No console do Google Cloud , imprima um token de acesso para o ID do projeto usando o comando
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDDesative a aplicação da política de senha para um locatário usando a API Identity Toolkit:
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 que você gerou anteriormente.PROJECT_ID: ID do projeto;TENANT_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 de acordo com a 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.