📍 Article principal de la série : Outline 2026 : guide pratique.
Outline supporte nativement OIDC depuis la version 0.65. Brancher sur Authentik unifie les logins de votre stack auto-hébergée : un seul mot de passe pour Outline, Vaultwarden, Forgejo, Coolify, Plausible. Provisioning automatique des nouveaux employés via les groupes Authentik. Ce tutoriel détaille la configuration complète, validée chez plusieurs PME francophones.
Prérequis
- Outline en production avec HTTPS (voir Déployer Outline).
- Authentik en production (voir Déployer Authentik).
- Domaines distincts :
wiki.votre-entreprise.cometauth.votre-entreprise.com. - Niveau attendu : intermédiaire/avancé.
- Temps estimé : 30-45 minutes.
Étape 1 — Créer le Provider OIDC dans Authentik
Authentik admin → Providers → Create → OAuth2/OpenID Provider :
Name: outline-provider
Authentication flow: default-authentication-flow
Authorization flow: default-provider-authorization-explicit-consent
Client type: confidential
Redirect URIs: https://wiki.votre-entreprise.com/auth/oidc.callback
Signing Key: authentik Self-signed Certificate
Scopes: email, profile, openid
Sauvegarder. Note client_id et client_secret générés.
Étape 2 — Créer l’Application Authentik
Applications → Create :
Name: Outline
Slug: outline
Provider: outline-provider
Launch URL: https://wiki.votre-entreprise.com
Étape 3 — Récupérer les URLs OIDC
Dans Authentik admin, ouvrir le Provider Outline. Copier :
- Authorize URL :
https://auth.votre-entreprise.com/application/o/authorize/ - Token URL :
https://auth.votre-entreprise.com/application/o/token/ - Userinfo URL :
https://auth.votre-entreprise.com/application/o/userinfo/ - JWKS URL :
https://auth.votre-entreprise.com/application/o/outline/jwks/
Étape 4 — Variables d’environnement Outline
Coolify → Outline → Environment :
OIDC_CLIENT_ID=client_id-copié
OIDC_CLIENT_SECRET=client_secret-copié
OIDC_AUTH_URI=https://auth.votre-entreprise.com/application/o/authorize/
OIDC_TOKEN_URI=https://auth.votre-entreprise.com/application/o/token/
OIDC_USERINFO_URI=https://auth.votre-entreprise.com/application/o/userinfo/
OIDC_LOGOUT_URI=https://auth.votre-entreprise.com/application/o/outline/end-session/
OIDC_USERNAME_CLAIM=email
OIDC_DISPLAY_NAME=Authentik
OIDC_SCOPES=openid profile email
OIDC_DISABLE_REDIRECT=false
Redéployer Outline pour prendre en compte.
Étape 5 — Test de login
Mode incognito → https://wiki.votre-entreprise.com. Bouton « Sign in with Authentik » apparaît. Cliquer.
Redirection vers auth.votre-entreprise.com → saisir login + MFA Authentik → consent screen → retour automatique sur Outline, connecté.
Étape 6 — Restreindre l’accès via groupes Authentik
Authentik admin → Applications → Outline → Policy / Group / User Bindings :
Add binding:
- Group: outline-users (ou tous les employés)
- Order: 0
Seuls les utilisateurs de ce groupe peuvent ouvrir Outline. Permissions à l’intérieur d’Outline (admin, member, viewer) restent gérées dans Outline.
Étape 7 — Auto-provisioning
Outline crée automatiquement un compte au premier login OIDC. Les nouveaux employés ajoutés au groupe Authentik outline-users obtiennent un compte Outline dès leur premier login. Onboarding zéro effort.
Étape 8 — Logout SSO complet
Outline supporte le SLO (Single Logout) via OIDC_LOGOUT_URI. Cliquer Logout dans Outline déconnecte aussi de Authentik et de toutes les autres apps SSO simultanément.
Étape 9 — Désactiver le login email/password
Une fois SSO testé et fonctionnel pour 3-5 utilisateurs pilote :
EMAIL_LOGIN=false # Variable Outline
Tous les utilisateurs sont forcés au SSO Authentik. Sécurité renforcée.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| « Invalid redirect_uri » | URL exacte ne match pas | Vérifier exact dans Authentik Provider, sans slash final |
| « Invalid scope » | Scope non déclaré côté Authentik | Ajouter scope dans Property Mappings |
| SSO marche mais email vide | Claim email non mappé | Vérifier scope email + Property Mapping email |
| Logout pas effectif | OIDC_LOGOUT_URI manquant | Ajouter end-session URL exact |
| Premier login échoue | Autoprovision désactivé | Vérifier Outline accepte création comptes via OIDC |
| Boucle redirection infinie | Cookie domain incompatible | Vérifier base domain Authentik et Outline |
Ancrage local : Sénégal, Côte d’Ivoire, Mali
Trois précisions. Multi-tenant ESN : pour une ESN qui héberge wiki client, créer un Authentik tenant dédié (branding client) + Outline custom domain par client. Conformité audit : logs Authentik + logs Outline ingérés Loki = audit trail complet. ARTCI/CDP demandent typiquement 1 an minimum. Suppression employé : retirer du groupe Authentik = accès Outline coupé immédiat. Données Outline conservées (admin peut transférer/supprimer).
Tutoriels frères
FAQ
SAML 2.0 supporté ? Oui depuis Outline 1.1. Authentik supporte aussi SAML. Préférer OIDC plus moderne.
Multi-IdP ? Outline ne supporte qu’un OIDC provider à la fois. Pour Authentik + Google Workspace, utiliser Authentik comme broker fédéré.
Group sync ? Pas natif dans Outline. Workaround : SCIM via Authentik (custom).
Tester sans casser prod ? Créer un sous-domaine staging de Outline et Authentik. Valider sur staging avant bascule.
Migration depuis Slack login ? Désactiver Slack provider, activer OIDC, premier login utilisateur fusionne automatiquement les comptes par email.
Pour étoffer le tableau
- 🔝 Retour au guide général : guide pratique Outline 2026
- Documentation Outline OIDC : getoutline.com/developers
Étape 1 — Provisionner Authentik et créer le tenant OIDC
Avant de configurer Outline, il faut un Authentik fonctionnel. Sur un VPS Hetzner CX22 à Falkenstein (4 EUR/mois, environ 2 624 FCFA), déployez Authentik 2025.10 via Docker Compose. Cette étape garantit un fournisseur d’identité résilient avant le branchement Outline.
wget https://goauthentik.io/docker-compose.yml
echo "PG_PASS=$(openssl rand -base64 36)" > .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60)" >> .env
docker compose up -d
Authentik expose son interface sur https://authentik.itskillscenter.io/if/flow/initial-setup/. Créez le compte akadmin et choisissez un mot de passe d’au moins 24 caractères. La preuve que ça tourne : la sidebar affiche System status: All checks passed et la page Outposts liste l’outpost embarqué.
Étape 2 — Créer le provider OIDC dédié à Outline
Dans Applications → Providers → Create, choisissez OAuth2/OpenID Provider. Le scope openid email profile couvre les besoins d’Outline. Ne réutilisez jamais un provider existant : Outline a besoin d’un client_id isolé pour permettre la rotation rapide en cas de fuite.
Name: outline-oidc
Authorization flow: default-provider-authorization-explicit-consent
Client type: Confidential
Client ID: outline
Client Secret: (généré par Authentik, copiez-le)
Redirect URIs: https://wiki.itskillscenter.io/auth/oidc.callback
Signing Key: authentik Self-signed Certificate
Cliquez sur Create. Vous saurez que tout fonctionne quand : la fiche provider affiche les endpoints discovery /application/o/outline/.well-known/openid-configuration accessibles en HTTP 200 sans authentification.
Étape 3 — Lier le provider à une application Authentik
Un provider seul n’est pas accessible : il doit être attaché à une application qui apparaît dans la mosaïque utilisateur. Dans Applications → Applications → Create :
Name: Outline Wiki
Slug: outline
Provider: outline-oidc
Launch URL: https://wiki.itskillscenter.io
Icon: upload du logo Outline 256x256
Liez l’application à un groupe (par exemple wiki-users) via une Policy Binding de type Group Membership. Validation pratique : un compte de test membre du groupe voit la tuile Outline sur sa page /if/user/ Authentik.
Étape 4 — Configurer Outline pour pointer vers Authentik
Outline supporte OIDC nativement depuis la version 0.69. Dans le fichier docker-compose.yml ou les variables d’environnement Coolify, ajoutez les paramètres OIDC. Évitez les variables Slack/Google qui surchargent OIDC.
OIDC_CLIENT_ID=outline
OIDC_CLIENT_SECRET=<secret copié à l'étape 2>
OIDC_AUTH_URI=https://authentik.itskillscenter.io/application/o/authorize/
OIDC_TOKEN_URI=https://authentik.itskillscenter.io/application/o/token/
OIDC_USERINFO_URI=https://authentik.itskillscenter.io/application/o/userinfo/
OIDC_LOGOUT_URI=https://authentik.itskillscenter.io/application/o/outline/end-session/
OIDC_USERNAME_CLAIM=preferred_username
OIDC_DISPLAY_NAME=Authentik
OIDC_SCOPES=openid profile email
Redémarrez Outline avec docker compose up -d outline. La preuve que ça tourne : la page de login affiche un bouton Continue with Authentik au lieu (ou en plus) du formulaire email.
Étape 5 — Tester le premier login depuis Dakar
Ouvrez une fenêtre de navigation privée et allez sur https://wiki.itskillscenter.io. Cliquez sur Continue with Authentik. Vous êtes redirigé vers Authentik, vous saisissez vos identifiants, vous consentez aux scopes, puis vous revenez sur Outline avec une session valide.
# côté Outline, vérifier le journal
docker logs outline --tail 30 | grep -i oidc
[info] OIDC user authenticated user@itskillscenter.io
Si vous voyez OIDC token validation failed, vérifiez que l’horloge du VPS est synchronisée via timedatectl status — un décalage de plus de 60 secondes invalide le JWT signé. Vous saurez que tout fonctionne quand : votre compte apparaît dans Settings → Members d’Outline avec le rôle Member.
Étape 6 — Mapper les groupes Authentik vers les rôles Outline
Outline ne lit pas nativement la claim groups pour assigner un rôle Admin. La parade : créer un Property Mapping Authentik qui injecte un champ custom, puis utiliser le rôle par défaut Outline et promouvoir manuellement les premiers admins. Dans Authentik Customisation → Property Mappings → Create → Scope Mapping :
Name: outline-groups
Scope name: groups
Description: Groups list for Outline
Expression: return {"groups": [group.name for group in user.ak_groups.all()]}
Ajoutez ce scope au provider outline-oidc. Validation pratique : la réponse /userinfo contient désormais un tableau groups visible via le debugger OIDC d’Authentik.
Étape 7 — Activer le SSO logout (Single Logout)
Sans logout fédéré, l’utilisateur qui clique sur Sign out dans Outline reste connecté à Authentik et peut revenir d’un clic. Pour l’Afrique de l’Ouest où les ordinateurs sont souvent partagés en cybercafé, c’est un risque de sécurité. Outline 0.71+ envoie un appel à OIDC_LOGOUT_URI si la variable est définie.
# Vérifier la variable
docker exec outline env | grep OIDC_LOGOUT
OIDC_LOGOUT_URI=https://authentik.itskillscenter.io/application/o/outline/end-session/
Testez en cliquant sur Sign out dans Outline. Vous devez être redirigé vers la page de déconnexion Authentik avec le message You have been logged out. Vous saurez que tout fonctionne quand : un retour sur Outline déclenche un nouveau cycle complet de login OIDC.
Étape 8 — Durcir avec MFA TOTP obligatoire
L’authentification fédérée concentre le risque sur Authentik : si le compte tombe, tout l’écosystème Outline-Mattermost-Gitea tombe. Imposez le TOTP sur le groupe wiki-users. Dans Flows & Stages → Stages → Create → Authenticator Validation :
Name: validate-totp
Device classes: TOTP
Not configured action: Configure
Insérez ce stage dans le flow default-authentication-flow juste après la validation du mot de passe, avec un Policy Binding qui filtre sur le groupe. Comment vérifier le bon fonctionnement : un nouvel utilisateur est forcé d’enrôler son authenticator (Aegis, Bitwarden, 2FAS) au premier login. Votre Outline est désormais blindé par OIDC + MFA, prêt pour une équipe de rédaction distribuée entre Dakar, Abidjan et Cotonou.
Étape 9 — Auditer les sessions actives et révoquer en urgence
Une SSO sans visibilité opérationnelle est un point aveugle. Authentik expose pour chaque utilisateur la liste des sessions OIDC actives avec IP source, user-agent et date de dernier rafraîchissement. Sur incident (laptop volé à Cotonou, fuite de mot de passe), vous devez pouvoir révoquer en moins de 60 secondes.
# Vue admin
https://authentik.itskillscenter.io/if/admin/#/identity/users/
# Cliquer sur l'utilisateur, onglet Sessions, bouton Delete
# Côté Outline
docker exec outline yarn sequelize:cli db:query "DELETE FROM sessions WHERE userId='UUID'"
Pour automatiser, ajoutez un webhook Authentik qui POST vers un endpoint interne lorsqu’un utilisateur est désactivé, et faites-le déclencher la suppression de la session Outline. La preuve que ça tourne : un test manuel avec un compte cobaye montre la déconnexion immédiate sur Outline dans l’onglet ouvert (popup Session expired, please log in).
Étape 10 — Sauvegarder Authentik avant de toucher à la prod
Toute modification du flow d’authentification (ajout d’un stage MFA, changement de mapping) peut casser le login. Avant chaque changement, faites un dump PostgreSQL et exportez la configuration Authentik en YAML. Stockez sur Scaleway Object Storage à Paris pour rester en zone RGPD compatible.
# Dump base
docker exec authentik-postgresql-1 pg_dump -U authentik authentik > backup-$(date +%F).sql
# Export config Blueprint
docker exec authentik-server-1 ak export_blueprint > blueprint-$(date +%F).yaml
# Upload S3
rclone copy backup-*.sql scaleway:authentik-backups/
Indicateur que tout est en place : un test de restauration sur un VPS jetable Hetzner reconstruit en moins de 10 minutes un Authentik fonctionnel avec le même flow OIDC pour Outline. Vous disposez maintenant d’une SSO Outline-Authentik production-grade : OIDC chiffré, MFA TOTP, single logout, audit des sessions et plan de reprise.
Étape 11 — Brancher Mattermost et Gitea sur le même Authentik
Le vrai bénéfice d’Authentik n’apparaît qu’à partir du deuxième service branché. Une fois Outline opérationnel, dupliquez le provider OIDC pour Mattermost (mattermost-oidc) et Gitea (gitea-oidc). Réutilisez le même Property Mapping groupes mais isolez chaque client_secret. L’utilisateur tape son mot de passe une seule fois par jour, puis circule entre wiki, chat et code sans nouvelle saisie.
# Mattermost docker-compose extrait
MM_GITLABSETTINGS_ENABLE=false
MM_OPENIDSETTINGS_ENABLE=true
MM_OPENIDSETTINGS_DISCOVERYENDPOINT=https://authentik.itskillscenter.io/application/o/mattermost/.well-known/openid-configuration
MM_OPENIDSETTINGS_ID=mattermost
MM_OPENIDSETTINGS_SECRET=<secret-mattermost>
Comment vérifier le bon fonctionnement : depuis votre dashboard Authentik, vous voyez trois tuiles (Outline, Mattermost, Gitea) et un seul cycle login MFA suffit pour la journée. À ce stade, ajouter Grafana, Vaultwarden ou n8n prend moins de 10 minutes par service.
Étape 12 — Surveiller la latence OIDC depuis l’Afrique de l’Ouest
Un Authentik basé à Falkenstein répond en 80-120 ms depuis Dakar via fibre Orange, mais peut grimper à 800 ms en 4G dégradée à Bouaké. Mesurez et alertez. Avec Uptime Kuma (gratuit, auto-hébergeable sur le même VPS) :
# Monitor HTTP keyword
URL: https://authentik.itskillscenter.io/-/health/live/
Keyword: ok
Interval: 60s
Alerte: webhook Mattermost #ops
# Monitor latence depuis Lagos via worker tier free
# (Hetzner Stockholm + Scaleway Paris + Africa Data Centres)
Le test concluant : un graphe de latence sur 30 jours stable sous 200 ms p95 et zéro alerte non traitée. Vous avez maintenant une infrastructure SSO Outline-Authentik observée, sauvegardée et étendue à plusieurs services internes — la fondation idéale pour une équipe SaaS distribuée entre l’Europe et l’Afrique francophone.