Je vous ai présenté, à travers plusieurs articles, Keycloak, comme étant une solution de SSO pour des applications, utilisant notamment le standard OIDC (OpenID Connect).
Nous allons voir aujourd'hui une solution similaire, que je trouve, pour ma part, plus léger et plus simple à mettre en place. Et cette solution se nomme : Authelia !
Authelia agit comme une "extension" à un reverse proxy, en voici les principaux :
-
Traefik
-
Nginx
-
HAProxy
À l'heure actuelle l'intégration avec Apache2 n'est malheureusement pas possible, voici l'explication fournie par la documentation :
Dans cet article nous allons installer Authelia en conteneur, avec Traefik. À noter que la version de Traefik utilisée est la suivante : traefik:2.4.
Installation
Vous aurez besoin de quatre entrées DNS à faire, pointant sur votre instance :
-
-
public.yourdomain.fr.
-
traefik.yourdomain.fr.
-
secure.yourdomain.fr.
Cloner le projet GitHub :
authelia/examples/compose/lite/authelia/configuration.yml
docker-compose.yml
Concrètement, voici le rôle des différents services :
-
Authelia : Le gestionnaire d'authentification
-
Redis : Stockage de données en mode clé-valeur
-
-
Secure : Exemple d'application (en l'occurence Whoami (https://hub.docker.com/r/containous/whoami) pour démontrer l'authentification 'two_factor')
-
Public : Exemple d'application (en l'occurence Whoami (https://hub.docker.com/r/containous/whoami) pour démontrer l'authentification 'one_factor')
On démarre le conteneur :
authelia / authelia
.
Register device, le lien pour ajouter l'appareil vous sera soit envoyé par email, ou dans le fichier suivant : authelia/examples/compose/lite/authemlia/notification.txt
Ajouter une application
Supposons que nous avons une application web toute simple, on va ajouter un conteneur web Nginx utilisant cette image : https://hub.docker.com/r/yeasy/simple-web/
On va devoir rajouter une entrée DNS pour cette app : app1.yourdomain.fr par exemple. Puis rajouter ceci dans le docker-compose.yml
:
https://www.authelia.com/docs/configuration/access-control.html) ; pour l'exemple nous allons choisir two_factor. Dans authelia/examples/compose/lite/authelia/configuration.yml
Et c'est tout ! Redémarrer les services :
En lecture complémentaire, voici les précédents articles émanant de l'approche du SSO :
- Comment nous avons créé une architecture SSO : Nextcloud + Keycloak + YubiKey
- Les différents modes d'authentification sous Keycloak