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 :

Apache has no module that supports this kind of authentication method. It’s not certain this would even be possible, however if anyone did something like this in the past we’d be interested in a contribution.

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 :

  • authelia.yourdomain.fr.

  • public.yourdomain.fr.

  • traefik.yourdomain.fr.

  • secure.yourdomain.fr.

Cloner le projet GitHub :

Copy to Clipboard

Préparer le fichier de configuration authelia/examples/compose/lite/authelia/configuration.yml avec notamment :

Copy to Clipboard
Copy to Clipboard
Copy to Clipboard
Copy to Clipboard

Et voici le joli docker-compose.yml :

Copy to Clipboard

Concrètement, voici le rôle des différents services :

  • Authelia : Le gestionnaire d'authentification

  • Redis : Stockage de données en mode clé-valeur

  • Traefik : Le reverse-proxy pour conteneur(s)

  • 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 :

Copy to Clipboard

Allons tout d'abord sur le panel Authelia :

 

Les identifiants par défaut sont : authelia / authelia.

 

Vous êtes alors invité à configurer l'authentification en deux facteurs. Nous avons testé via OTP (à travers l'application Authy) et via YubiKey (notamment avec la version biométrique). Cliquez sur 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 :

 

Copy to Clipboard

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 :

Copy to Clipboard

Ensuite, il faut choisir le mode d'authentification pour cette nouvelle application (voir : 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 :

Copy to Clipboard

Et c'est tout ! Redémarrer les services :

Copy to Clipboard

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