Ativar, desativar e usar políticas de senha
Este documento mostra como usar políticas de senha para melhorar a força de senhas para usuários novos e atuais.
Visão geral
Com as políticas de senha, é 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:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Antes de começar
- Instale o SDK Admin.
Modos de aplicação
É possível ativar a aplicação da política de senha em dois modos:
- Exigir: não será possível fazer login 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 compliance. Todos os critérios ausentes necessários para atender à política são retornados. Os critérios retornados incluem:
MISSING_LOWERCASE_CHARACTER
MISSING_UPPERCASE_CHARACTER
MISSING_NUMERIC_CHARACTER
MISSING_NON_ALPHANUMERIC_CHARACTER
MINIMUM_PASSWORD_LENGTH
MAXIMUM_PASSWORD_LENGTH
Você pode enviar essas informações ao usuário para informá-lo de que ele precisa atualizar a senha. O exemplo a seguir mostra uma resposta com 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.
Quando você 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 de regras no modo de notificação.
Ativar aplicação
Para aplicar uma política de senha, faça o seguinte:
- Configure o login por e-mail e senha, caso ainda não tenha feito isso.
Para aplicar uma política de senha no nível do projeto, execute o seguinte:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
Substitua:
MIN_PASSWORD_LENGTH
: o comprimento mínimo de senha necessárioMAX_PASSWORD_LENGTH
: o comprimento máximo da senha necessária
Para aplicar uma política de senha no nível do locatário, execute o seguinte:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().tenantManager().createTenant({ displayName: "admin-tenant", passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
Desativar a aplicação
Para desativar a aplicação da política de senha no nível do projeto, execute o seguinte:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
Para desativar a aplicação obrigatória da política de senhas no nível do locatário, execute o seguinte:
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
Substitua
TENANT-ID
pelo ID do locatário em que você quer desativar uma política de senha.
Como aplicar no lado do cliente
As senhas podem ser validadas de acordo com a política de senhas 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 could not be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are missing.