Sécuriser vos services grâce à Authentik : Prélude
Qu’est-ce qu’un Fournisseur d’Identité (IdP) ?
Pour sécuriser vos services grâce à Authentik, vous devez d’abord comprendre ce qu’est un fournisseur d’identité, ou IdP. Alors un IdP est une solution qui gère l’authentification des utilisateurs pour différentes applications et services. Il centralise le processus de connexion, ce qui simplifie la gestion des identités et renforce la sécurité. Par exemple, lorsqu’un utilisateur se connecte à un service via un IdP, ses informations d’identification sont vérifiées par le fournisseur d’identité, qui décide ensuite si l’utilisateur est autorisé à accéder au service ou non.
Qu’est-ce que Authentik ?
Authentik est un fournisseur d’identité open-source qui va nous permettre de mettre en place une gestion centralisée des accès à nos services.
De plus, Authentik supporte de multiples protocoles d’authentification (comme OAuth et SAML), ce qui va nous permettre d’automatiser la création des utilisateurs sur les différents services.
Enfin, grâce à Authentik, on va aussi pouvoir créer des flux d’inscription pour permettre aux nouveaux utilisateurs de se créer des comptes, gérer des groupes afin de restreindre l’accès à certains services ou encore la récupération et changement de mot de passe à partir de mail.
Si vous voulez aller voir le tableau de comparaison des options fournies par Authentik, vous verrez que celui-ci permet pas mal d’options que les autres ne peuvent pas.
Installer Authentik
Attention ! N’installez par Authentik depuis Portainer, cela pourrait entrainer des problèmes. Il est conseillé de le faire directement depuis le CLI (terminal) de votre serveur.
Si vous avez suivi le guide pour Créer un média-center avec Jellyfin, Sonarr, Radarr et Prowlarr, naviguez dans votre dossier server/auth, sinon choisissez celui de votre choix, puis téléchargez le fichier docker-compose officiel:
mkdir ~/server/auth
cd ~/server/auth
wget https://goauthentik.io/docker-compose.yml
Maintenant vous allez devoir générer un mot de passe et une clé secrète, pour cela on va installer pwgen
, puis les copier dans le fichier .env
:
sudo apt-get install -y pwgen
echo "PG_PASS=$(pwgen -s 40 1)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env
Pour activer les rapports d’erreurs, exécutez la commande suivante :
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env
Enfin, il suffit de lancer le conteneur :
docker compose up -d
Bravo ! Maintenant que Authentik est installé, naviguez à l’adresse suivante pour démarrer la configuration initiale : http://VOTRE_ADRESSE_IP_DU_SERVEUR:9000/if/flow/initial-setup/
Mettre en place des applications
Première étape
Une application est ce qui va nous permettre de montrer un page de connexion avant de pouvoir accéder au service.
Tout d’abord, dans Applications → Outposts, vous allez devoir modifier l’outpost crée par défaut, authentik Embedded Outpost. En dessous de Actions, cliquez sur le bouton de gauche Edit, puis dans Configuration, modifiez authentik_host
selon l’adresse externe d’Authentik, comme par exemple https://auth.domain.com/. Si vous n’avez pas encore configuré un moyen d’accéder à votre serveur depuis internet, allez suivre le guide Accéder à son serveur depuis internet avec NPM et Cloudflare.
Cette manipulation est à faire qu’une seule fois.
Créer un Provider
Allez dans Applications → Providers → Create, choisissez Proxy Provider :
- Name = le nom du service souhaité
- Authentication flow = default-authentication-flow (Welcome to authentik!)
- Authorization flow = default-provider-authorization-implicit-consent (Authorize Application)
- Puis sélectionnez Forward auth (single application), et dans External host, indiquer l’URL externe de votre application, sous cette forme : https://applications.domain.com/

Créer une application
Maintenant, dans Applications → Applications → Create :
- Name et Slug = le nom de votre service
- Provider = le proxy provider que vous venez de créer
- Dans UI settings, vous pouvez modifier l’icône ou la description par exemple

Configurer l’outpost
Puis dans Applications → Outposts, cliquez à nouveau sur le bouton Edit, et dans Applications, vous allez voir votre Application fraîchement créée apparaitre, sous le format « nom-de-l’application (nom-du-provider) ». Sélectionnez votre application en cliquant dessus.
Vous pouvez en sélectionner plusieurs en maintenant Ctrl + Click gauche, ou tous les sélectionner en faisant Ctrl + A

Editez votre reverse proxy
Retournez dans Applications → Providers, et cliquez sur votre provider :

Si vous avez tout bien configuré, vous devrez voir apparaitre Assigned to application nom-de-l’application, et dans la page du provider, la pop-up de Warning ne devrait pas être présente:

Descendez dans la partie Setup, et sélectionner Nginx (Proxy Manager) si vous avez suivie le guide Accéder à son serveur depuis internet avec NPM et Cloudflare. Copier tout le paragraphe.
Dirigez vous vers votre page NPM, et dans le Proxy Host du service que vous voulez mettre derrière une page de connexion, faites Edit, puis dans Advanced, collez le code fourni par Authentik. Puis trouvez la ligne suivante, et remplacez outpost.company par VOTRE_ADRESSE_IP_DU_SERVEUR, comme ci-dessous :
proxy_pass http://outpost.company:9000/outpost.goauthentik.io;
proxy_pass http://VOTRE_ADRESSE_IP_DU_SERVEUR:9000/outpost.goauthentik.io;

Bravo ! Maintenant, votre service sera sécurisé derrière une page de connexion !
Désactivez les services de connexion interne pour les apps *arr
Si vous voulez centraliser les moyens de connexion, un moyen efficace est de désactiver la connexion interne, et la remplacer par une application dans Authentik :
Allez dans le dossier de configuration de votre application arr, puis trouvez le fichier configs.xml. Remplacez la ligne suivante :
<AuthenticationMethod>Basic</AuthenticationMethod>
# Par
<AuthenticationMethod>External</AuthenticationMethod>
Enfin, relancez l’application pour finaliser la désactivation.
N’hésitez pas à vous rendre sur les pages de documentations des services que vous avez installés, pour voir si vous pouvez désactiver les pages de connexion intégrées, ou alors mettre en place des plugins de SSO ou LADP.
Maintenant que vous savez comment sécuriser vos services grâce à Authentik, vous pouvez aller voir comment mettre en place le plugin SSO de Jellyfin, pour pouvoir vous connecter automatiquement : Comment se connecter en SSO à Jellyfin avec Authentik