Expiração de Senha de Usuário e Complexidade de Senha

Implementação de novos recursos de segurança para usuários nativos do Latromi:

  • Configurações de Complexidade de Senha
  • Configuração de Tempo de expiração de Senha.

A configuração de “Expiração da Senha” é um critério de segurança necessário para empresas que buscam a certificação Operador Econômico Autorizado (OEA).

NOTA: Essa implementação não será aplicada a usuários integrados via Active Directory ou Banco de Dados. Se aplica apenas a usuário nativos do Latromi, ou seja, usuários que foram criados usando a página de Cadastro de Usuários.

Implementação Proposta

Criação do cadastro de “Conjunto de Configurações de Segurança”. Nesse cadastro, haveriam campos para configuração da complexidade e expiração de senha.

O Conjunto de Configurações de Segurança seria vinculado no cadastro do usuário. Este usuário passaria a operar seguindo as regras especificadas nas Configurações de Segurança.

Conjunto de Configurações de Segurança

Identificação
Campo Tipo Descrição
Nome TextBox Nome do Conjunto de Configurações Segurança
Configurações de Complexidade de Senha
Campo Tipo Descrição
Exigir dígitos CheckBox Se estiver marcada, será obrigatório informar algum número na hora de cadastrar uma nova senha.
Exigir letras minúsculas CheckBox Se estiver marcada, será obrigatório informar alguma letra minúscula na hora de cadastrar uma nova senha.
Exigir letras maiúsculas CheckBox Se estiver marcada, será obrigatório informar alguma letra maiúscula na hora de cadastrar uma nova senha.
Exigir caracteres especiais CheckBox Se estiver marcada, será obrigatório informar algum caractere especial na hora de cadastrar uma nova senha.
Comprimento minimo Numeric Quantidade minima de caracteres na senha. Valor padrão será 6.
Quantidade de caracteres únicos Numeric Quantidade minima de caracteres na únicos na senha. Valor padrão será 0.
Expiração de Senha
Campo Tipo Descrição
Tempo de expiração da senha Numeric Quantidade de dias para expiração de senha. Quando atingir este prazo, o usuário será obrigado a trocar a senha

Cadastro de Usuários

Criação de novo campo Configurações de Segurança, do tipo ComboBox para selecionar o Conjunto de Configurações de Segurança.

Login de Usuário

Imediatamente após a autenticação bem sucedida do usuário, o sistema deve verificar se o mesmo possui um Conjunto de Configurações de Segurança informado. Se sim, o sistema agir dessa forma:

  • Se usuário tem período de expiração de senha configurado, e este período expirou ou o usuário nunca trocou a senha, deve abrir página para trocar a senha.
    • A nova senha informada precisa atender as Configurações de Complexidade de Senha.
    • A data atual será gravada como última data da troca de senha no cadastro do usuário.

Migração SQL

Comandos SQL para criação dos Campos

SET SEARCH_PATH = wecdb;
CREATE TABLE usersecuritysettings
(
   id                               SERIAL NOT NULL,
   name                             TEXT NOT NULL,
   passwordrequiredigit             BOOLEAN NOT NULL DEFAULT FALSE,
   passwordrequirelowercase         BOOLEAN NOT NULL DEFAULT FALSE,
   passwordrequireuppercase         BOOLEAN NOT NULL DEFAULT FALSE,
   passwordrequirenonalphanumeric   BOOLEAN NOT NULL DEFAULT FALSE,
   passwordrequiredlength           INT NOT NULL DEFAULT 6,
   passwordrequireduniquechars      INT NOT NULL DEFAULT 0, 
   passwordexpiratontime            INTERVAL
);
ALTER TABLE usersecuritysettings ADD CONSTRAINT pk_usersecursettings_id PRIMARY KEY (id);
COMMENT ON TABLE usersecuritysettings IS 'Conjunto de Configurações de Segurança para Usuários.';
COMMENT ON COLUMN usersecuritysettings.id IS 'Id das Configurações de Segurança.';
COMMENT ON COLUMN usersecuritysettings.passwordrequiredigit IS 'True se exige número na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordrequirelowercase IS 'True se exige letras minúsculas na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordrequireuppercase IS 'True se exige letras maiúsculas na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordrequirenonalphanumeric IS 'True se exige caracteres especiais na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordrequiredlength IS 'Quantidade minima de caracteres na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordrequireduniquechars IS 'Quantidade minima de caracteres únicos na senha.';
COMMENT ON COLUMN usersecuritysettings.passwordexpiratontime IS 'Tempo de expiração da senha.';

ALTER TABLE usuario ADD securitysettingsid INT;
ALTER TABLE usuario ADD lastpasswordchange TIMESTAMP WITH TIME ZONE;
ALTER TABLE usuario ADD CONSTRAINT fk_usr_secursettings FOREIGN KEY (securitysettingsid) REFERENCES usersecuritysettings (id) ON DELETE SET NULL ON UPDATE CASCADE;
COMMENT ON COLUMN usuario.securitysettingsid IS 'ID do Conjunto de Configurações de Senha';
COMMENT ON COLUMN usuario.lastpasswordchange IS 'Data e hora da última vez em que o usuário alterou a senha.';