Fluxo técnico

Como o Granauth funciona na prática

Entenda o fluxo de autenticação, autorização granular e integração com aplicações consumidoras usando permissões fora do JWT, cache e permissionVersion.

Caso de uso real

Imagine uma aplicação de solicitações internas. Diferentes usuários e grupos têm permissões distintas para visualizar, aprovar e exportar.

Usuário
Origem
Recurso
Ação
João
Grupo Operadores
Solicitações
Visualizar
Maria
Grupo Gestores
Solicitações
Aprovar
Carlos
Permissão direta
Relatórios
Exportar

Este é um modelo de autorização granular: permissões podem vir de grupos ou serem concedidas diretamente ao usuário.

Fluxo de autenticação

1

Usuário faz login

Credenciais são enviadas para o Granauth.

2

Granauth valida

Senha, políticas e estado do usuário são verificados.

3

JWT enxuto gerado

Token carrega apenas dados essenciais.

4

Refresh Token criado

Permite renovar sessão com controle.

5

Aplicação usa JWT

Token identifica o usuário nas requisições.

Por que permissões ficam fora do JWT?

  • Evita tokens grandes que podem exceder limites de headers HTTP
  • Reduz acoplamento entre autenticação e autorização
  • Permite atualização de permissões sem depender exclusivamente da expiração do token

Fluxo de autorização granular

1

Usuário chama endpoint protegido

Exemplo: POST /service-requests/123/approve

2

API consumidora valida JWT

Identifica o usuário e verifica a autenticidade do token.

3

Policy identifica recurso e ação

Permissão exigida: SERVICE_REQUESTS / APPROVE

4

Granauth.Client busca permissões

Verifica cache local ou consulta a central.

5

permissionVersion valida cache

Se a versão mudou, recarrega permissões.

6

Acesso permitido ou negado

Decisão baseada em permissões diretas ou herdadas de grupos.

7

Evento pode ser auditado

Acessos bloqueados e ações sensíveis são registrados.

Exemplo visual
Endpoint: POST /service-requests/{id}/approve
Permissão exigida: SERVICE_REQUESTS / APPROVE
Resultado: Permitido se o usuário tiver permissão direta ou herdada de grupo.

O papel do Granauth.Client

O Granauth.Client evita que cada API consumidora precise reimplementar comunicação, cache e validação de permissões.

Consulta permissões

Carrega permissões efetivas do usuário na aplicação.

Mantém cache local

Reduz latência e carga na central de autorização.

Valida recurso e ação

Verifica se o usuário possui a permissão específica.

Verifica permissionVersion

Detecta mudanças e invalida cache quando necessário.

Integra com policies

Conecta-se às políticas de autorização do ASP.NET Core.

Reduz código repetido

Evita duplicação de lógica em cada API consumidora.

Controller/Endpoint
Policy de autorização
Granauth.Client
Cache de permissões
Granauth API
Permitido ou negado
Exemplo de uso
[RequirePermission(DemoResources.ServiceRequests, DemoActions.Approve)]
public async Task<IActionResult> ApproveRequest(int id)
{
    // Lógica de aprovação
}

Frontend melhora a experiência. Backend garante a segurança.

Frontend

Usa permissões para:

  • Esconder menus e botões
  • Desabilitar rotas
  • Melhorar experiência do usuário
  • Evitar tentativas desnecessárias
UX e navegação

Backend

Valida permissões antes de:

  • Executar ações protegidas
  • Retornar dados sensíveis
  • Modificar estado do sistema
  • Processar requisições críticas
Segurança real

Importante: Mesmo que alguém tente chamar a API diretamente contornando o frontend, o endpoint deve validar recurso e ação no backend.

Cache sem perder controle

A aplicação consumidora pode cachear permissões para evitar chamadas repetidas. Quando permissões mudam, o permissionVersion garante que o cache seja invalidado.

Permissão alterada no Admin

Administrador concede ou remove permissão.

permissionVersion atualizado

O Granauth incrementa a versão global ou do usuário.

Client detecta versão antiga

Compara a versão em cache com a versão atual.

Cache invalidado

O cache local é descartado.

Permissões recarregadas

Nova consulta traz permissões atualizadas.

Vantagens do permissionVersion

  • Reduz latência com cache local
  • Garante consistência quando permissões mudam
  • Evita validação expirada baseada apenas em tempo
  • Permite invalidação seletiva ou global

Onde a auditoria entra

Auditoria registra eventos relevantes do fluxo, como falhas de autenticação, acessos bloqueados, permissões concedidas/removidas e alterações administrativas.

🔐
Login e autenticação
Acessos bloqueados
Permissões concedidas
🗑️
Permissões removidas
⚙️
Alterações administrativas

A auditoria está em evolução contínua. Eventos são adicionados conforme necessidades reais surgem durante integrações.

Quer entender melhor o fluxo técnico?

Para conversar sobre integração, tirar dúvidas técnicas ou acompanhar a evolução do projeto, entre em contato.