Conn2Flow
Navegação das docs

Referência / Bibliotecas

Biblioteca autenticacao.php

O token de login assinado com a chave RSA do site, a cifragem RSA de segredos, o controle de tentativas por IP (login, cadastro, recuperação de senha) e a validação de credenciais do canal distribuído.

Caminho no Gestor bibliotecas/autenticacao.php

Quatro assuntos: o token JWT com RSA que o Gestor usa no cookie de login e na API, cifrar e decifrar valores com as chaves RSA do site, o controle de tentativas por IP e as credenciais do canal distribuído. As chaves ficam em autenticacoes/<dominio>/chaves/gestor/ (privada.key, protegida por OPENSSL_PASSWORD, e publica.key), veja variáveis globais.

O token RSA

Não é um JWT padrão (RS256): o cabeçalho diz "alg": "RSA", e a "assinatura" é o próprio cabeçalho.payload cifrado com a chave privada (openssl_private_encrypt, em blocos de 245 bytes, cada bloco em base64 e o conjunto de novo em base64). Validar é decifrar com a chave pública e comparar com o cabeçalho.payload recebido.

  • autenticacao_gerar_jwt_chave_privada(['host', 'expiration', 'pubID', 'chavePrivada', 'chavePrivadaSenha', 'payload' => opcional]) gera o token. Sem payload, usa {iss: host, exp: expiration, sub: pubID}. Emite os tokens da API; o cookie de login usa o mesmo formato, gerado por usuario_gerar_token_autorizacao() (usuario.php) e validado por gestor_permissao_validar_jwt().

  • autenticacao_validar_jwt_chave_publica(['token', 'chavePublica', 'retornarPayloadCompleto']) confere a assinatura, exige exp e sub e recusa token vencido. Devolve o sub (o pubID), o payload inteiro ou false.

Validar o token é só o primeiro passo: gestor_permissao_token() ainda confere o pubID em usuarios_tokens com o HMAC de USUARIO_HASH_PASSWORD (ciclo de uma requisição).

As variantes invertidas autenticacao_gerar_jwt_chave_publica() e autenticacao_validar_jwt_chave_privada(), e autenticacao_cliente_gerar_jwt() / autenticacao_cliente_gerar_token_validacao() (do modo multi-host), não têm chamadores.

Cifrar segredos

Função Cifra com Decifra com
autenticacao_encriptar_chave_privada() / autenticacao_decriptar_chave_publica() privada pública
autenticacao_encriptar_chave_publica() / autenticacao_decriptar_chave_privada() pública privada

O primeiro par é o usado para guardar chaves de API (servidores de IA): esconde o valor de quem só vê o banco, mas quem tem o banco e a chave pública o recupera. Para sigilo de verdade, cifre com a pública e decifre com a privada.

autenticacao_openssl_gerar_chaves() gera um par RSA de 2048 bits; autenticacao_gerar_senha() e autenticacao_crypto_rand_secure() geram senhas e números aleatórios. As três não têm chamadores no core (o instalador tem o próprio gerador de chaves).

Controle de tentativas por IP

A tabela acessos guarda, por IP (de ip_get()) e tipo (login, signup, forgot-password), a contagem, o status e o bloqueio.

Função Quando chamar
autenticacao_acesso_verificar(['tipo']) Antes de mostrar/processar o formulário: permitido, status (livre, antispam, bloqueado) e tempo_bloqueio
autenticacao_acesso_falha(['tipo']) Senha errada
autenticacao_acesso_confirmar(['tipo']) Login certo: zera a contagem
autenticacao_acesso_cadastrar(['tipo', 'antispam']) Cada cadastro ou pedido de recuperação

Limites do .env: no login, até ACESSOS_MAXIMO_LOGINS_SIMPLES (3) falhas o status é livre, até ACESSOS_MAXIMO_FALHAS_LOGINS (10) é antispam, e depois bloqueado. Nos cadastros, ACESSOS_MAXIMO_CADASTROS_* e ACESSOS_MAXIMO_CADASTROS_SIMPLES_* por tipo. Cada bloqueio dura bloqueios × ACESSOS_TEMPO_BLOQUEIO_IP segundos (cresce a cada reincidência), e o registro some depois de ACESSOS_TEMPO_DESBLOQUEIO_IP sem atividade. autenticacao_acessos_limpeza() roda a cada verificação e aplica essas duas regras.

No perfil-usuario, o status decide o CAPTCHA: com reCAPTCHA, ele só é exigido a partir de antispam; com Turnstile, sempre.

Canal distribuído

Usadas pelo central da arquitetura distribuída:

  • autenticacao_distribuido_gerar_tokens($id_usuarios): tokens OAuth2 com escopo distributed;

  • autenticacao_distribuido_verificar_permissao_modulo(): o perfil do usuário tem o módulo alvo;

  • autenticacao_distribuido_token_ativo(): o access token do canal é válido.

A validação de credenciais do canal não passa pelo controle de tentativas.

Funções

Gerado a partir de gestor/bibliotecas/autenticacao.php · 21 funções

21 de 21

autenticacao_cliente_gerar_jwt

ver no código · linha 69 ↗
autenticacao_cliente_gerar_jwt(array|false $params = false): string|false

Gera um token JWT assinado com chave RSA para autenticação de cliente.

Parâmetros

$paramsarray|false
Parâmetros da função.

Retorno

string|false
Token JWT completo ou false em caso de erro.

autenticacao_openssl_gerar_chaves

ver no código · linha 145 ↗
autenticacao_openssl_gerar_chaves(array|false $params = false): array|false

Gera par de chaves pública e privada OpenSSL com algoritmo RSA.

Parâmetros

$paramsarray|false
Parâmetros da função.

Retorno

array|false
Array com 'publica' e 'privada', ou false em erro.

autenticacao_gerar_jwt_chave_privada

ver no código · linha 408 ↗
autenticacao_gerar_jwt_chave_privada(array|false $params = false): string|false

Gera JWT assinado com chave privada RSA.

Parâmetros

$paramsarray|false
Parâmetros (host, expiration, pubID, chavePrivada, chavePrivadaSenha obrigatórios; payload opcional).

Retorno

string|false
Token JWT ou false em erro.

autenticacao_validar_jwt_chave_publica

ver no código · linha 480 ↗
autenticacao_validar_jwt_chave_publica(array|false $params = false): array|string|false

Valida JWT usando chave pública RSA.

Parâmetros

$paramsarray|false
Parâmetros (token, chavePublica obrigatórios; retornarPayloadCompleto opcional).

Retorno

array|string|false
Payload decodificado, pubID ou false se inválido.

autenticacao_acesso_verificar

ver no código · linha 725 ↗
autenticacao_acesso_verificar(array|false $params = false): array

Verifica estado de acesso do usuário com proteção anti-spam.

Parâmetros

$paramsarray|false
Parâmetros (tipo obrigatório).

Retorno

array
Estado do acesso com 'permitido', 'status' e 'mensagem' opcional.

autenticacao_encriptar_chave_privada

ver no código · linha 1164 ↗
autenticacao_encriptar_chave_privada(array|false $params = false): string|false

Encripta valor usando chave privada RSA.

Parâmetros

$paramsarray|false
Parâmetros (valor, chavePrivada, chavePrivadaSenha obrigatórios).

Retorno

string|false
Valor encriptado em base64 ou false em erro.

autenticacao_decriptar_chave_privada

ver no código · linha 1266 ↗
autenticacao_decriptar_chave_privada(array|false $params = false): string|false

Decripta valor usando chave privada RSA.

Parâmetros

$paramsarray|false
Parâmetros (criptografia, chavePrivada, chavePrivadaSenha obrigatórios).

Retorno

string|false
Valor decriptado ou false em erro.

autenticacao_distribuido_gerar_tokens

ver no código · linha 1326 ↗
autenticacao_distribuido_gerar_tokens(int $id_usuarios): array|false

Gera os tokens de acesso e renovação (OAuth2) para o canal distribuído.

Parâmetros

$id_usuariosint
ID do usuário já validado.

Retorno

array|false
Tokens (access_token, refresh_token, expires_in, ...) ou false.

autenticacao_distribuido_verificar_permissao_modulo

ver no código · linha 1356 ↗
autenticacao_distribuido_verificar_permissao_modulo(int $id_usuarios, string $modulo): bool

Verifica se o usuário tem permissão de acesso ao módulo alvo (controle por perfil).

Parâmetros

$id_usuariosint
ID do usuário já autenticado.
$modulostring
Slug do módulo alvo (ex.: 'modulos-grupos-distribuido').

Retorno

bool
true se o usuário pode acessar o módulo.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada