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.';