O Authentik é um Identity Provider (IdP) open-source, self-hosted, que em 2026 se consolidou como alternativa flexível ao Keycloak para pequenas e médias empresas portuguesas. Suporta SSO multi-protocolo, fluxos de autenticação visuais e WebAuthn nativo.

Introdução

Authentik é um servidor de identidade construído em Python/Django que fornece Single Sign-On (SSO), gestão de utilizadores e controlo de acesso. Diferentemente do Keycloak (Java), o Authentik oferece um editor visual de fluxos (Flows) que permite desenhar pipelines de autenticação sem código — ideal para equipas sem especialistas em identidade.

Em 2026, a versão 2025.x traz melhorias no desempenho, suporte expandido para passkeys e integração nativa com aplicações populares (Grafana, Proxmox, Nextcloud, BookStack).

Nota: Authentik requer Docker Compose ou Kubernetes. Mínimo recomendado: 2 vCPU, 4 GB RAM. Inclui PostgreSQL, Redis e servidor web (embedded).

Protocolos: SAML, OIDC e LDAP

O Authentik suporta três protocolos principais de federação de identidade, configuráveis por aplicação através de Providers:

  • SAML 2.0: IdP-initiated e SP-initiated. Mapeamento de atributos flexível. Ideal para aplicações enterprise legacy.
  • OpenID Connect (OIDC): Authorization Code flow com PKCE. Suporta refresh tokens e introspeção. Recomendado para aplicações modernas.
  • LDAP: Proxy LDAP que permite autenticação de aplicações que só suportam LDAP bind (ex.: serviços legados, appliances de rede).

Exemplo de configuração OIDC para uma aplicação (docker-compose mínimo):

version: "3.4"
services:
  server:
    image: ghcr.io/goauthentik/server:2025
    command: server
    environment:
      AUTHENTIK_SECRET_KEY: "changeme-secret-key"
      AUTHENTIK_POSTGRESQL__HOST: postgres
      AUTHENTIK_POSTGRESQL__USER: authentik
      AUTHENTIK_POSTGRESQL__PASSWORD: "changeme-pg-pass"
      AUTHENTIK_POSTGRESQL__NAME: authentik
    ports: ["9000:9000","9443:9443"]

WebAuthn e Fluxos Visuais

O Authentik foi dos primeiros IdP self-hosted a integrar WebAuthn/FIDO2 de forma nativa. Em 2026, suporta:

  • Passkeys: sincronizáveis entre dispositivos (Apple, Google, Microsoft) — o utilizador já não precisa de YubiKey dedicado.
  • Autenticadores de plataforma: Windows Hello, Touch ID, Face ID.
  • Autenticadores roaming: YubiKey, SoloKey, Feitian.

O motor de Flows permite compor pipelines de autenticação visualmente. Cada Flow é uma sequência de Stages (Password, AuthenticatorValidate, Consent, Email, Deny). Casos práticos:

  • MFA obrigatório para administradores; password-only para utilizadores internos.
  • Consentimento explícito antes de partilhar atributos com terceiros (RGPD).
  • Fluxo de recuperação de conta com verificação por email + WebAuthn re-enrollment.
Dica: Cria Flows distintos para “autenticação” e “inscrição”. O flow de inscrição pode exigir convite (token) — útil para restringir acesso a colaboradores.

Comparação com Keycloak

Keycloak continua a ser o IdP self-hosted mais maduro, mas o Authentik ganha terreno em usabilidade e flexibilidade. Comparação para PME em 2026:

Critério Authentik Keycloak
Linguagem Python/Django Java/Quarkus
Editor de fluxos Visual (drag-and-drop) Símbolos de browser flow
WebAuthn/Passkeys Nativo, simples Nativo, mais config.
UI Admin Moderna, limpa Funcional, datada
LDAP proxy Sim (built-in) Sim (via LDAP federation)
Consumo de RAM ~1–2 GB ~2–4 GB
Comunidade/maturidade Crescente Madura (Red Hat)
Ideal para PME, fluxos custom Enterprise, conformidade

Erros Comuns

Erros frequentes na implementação do Authentik em PME e resoluções práticas:

Erro Causa Resolução
“Redirect URI mismatch” URL da app não coincide com o Provider OIDC Verificar trailing slash e protocolo (https)
SAML “Destination mismatch” Entity ID ou ACS URL mal configurados no SP Copiar metadados do Authentik para o SP
LDAP bind falha Base DN incorreta ou TLS não validado Usar base DN “ou=users,dc=authentik,dc=io”
WebAuthn “no credentials” RP ID não corresponde ao domínio RP ID = hostname sem protocolo (ex.: auth.exemplo.pt)
Fluxo fica em loop Stage de ordenação incorreta ou falta de Policy Adicionar Policy de “user is authenticated” no início
Email de recuperação não enviado SMTP não configurado em Settings > Email Configurar SMTP com TLS na porta 587

Para PME que precisam de SSO flexível sem a complexidade do Keycloak, o Authentik em 2026 é uma escolha sólida: comunidade ativa, documentação em melhoria contínua e fluxos visuais que reduzem a barreira de entrada para equipas sem especialistas em identidade.