Mise en place d'Authelia : OpenSource SSO
Authelia est une solution OpenSource qui agit comme un portail d'accès avec authentification, ou SSO. Il permet de centraliser l'authentification des utilisateurs et leur permet l'accès à des ressources protégées. L'authentification peut passer par une simple connexion user / password mais des fonctionnalités avancées sont disponibles : authentification à deux facteurs, utilisation d'une notification push Duo ou activation d'une clé de sécurité Yubikey.
Fonctionnement
Voici un exemple de mise en place d'Authelia avec Traefic / Nginx :
Mise en place d'authelia
Préparation des dossiers de configuration
Nous allons créer les dossiers de configuration et y créer les fichiers de base configuration.yml et users_database.yml :
mkdir -p /data/Dockers/authelia/config
touch /data/Dockers/authelia/config/configuration.yml
touch /data/Dockers/authelia/config/users_database.yml
configuration.yaml - Configuration d'authelia
Le fichier de configuration configuration.yml (Pour générer les tokens suivez le guide)
##############################################################################
# Authelia configuration #
##############################################################################
host: 0.0.0.0
port: 9091
log_level: info
jwt_secret: A4gYb7QFpbfKaNWAX7P7FX5y
default_redirection_url: https://auth.domain.com
totp:
issuer: domain.com
period: 30
skew: 1
#duo_api:
# hostname: api-123456789.example.com
# integration_key: ABCDEF
# secret_key: yet-another-long-string-of-characters-and-numbers-and-symbols
authentication_backend:
disable_reset_password: false
file:
path: /config/users_database.yml
password:
algorithm: argon2id
iterations: 1
salt_length: 16
parallelism: 8
memory: 64
access_control:
default_policy: deny
rules:
- domain:
- "radarr.domain.com"
- "sonarr.domain.com"
- "radarr.domain.com"
policy: bypass
resources:
- "^/api.*"
- domain:
- "auth.domain.com"
- "www.domain.com"
policy: bypass
- domain:
- "radarr.domain.com"
- "sonarr.domain.com"
- "deluge.domain.com"
policy: one_factor
subject:
- ["group:admins", "group:users"]
session:
name: authelia_session
secret: quaeS9MaixieL1aelee0vov3J
expiration: 3600 # 1 hour
inactivity: 7200 # 2 hours
domain: domain.com # Root domain
redis:
host: redis
port: 6379
regulation:
max_retries: 5
find_time: 2m
ban_time: 10m
theme: dark # options: dark, light, grey
storage:
local:
path: /config/db.sqlite3
notifier: # Permet la validation d'un compte si 2FA
# filesystem:
# filename: /config/notification.txt
smtp:
username: contact@domain.com
password: Be1zah2iek7pheNgeileosaev
host: mail.domain.com
port: 587 # 25 non-ssl, 443 ssl, 587 tls
sender: contact@domain.com
subject: "[Authelia] {title}"
disable_require_tls: false # set to true if your domain uses no tls or ssl only
disable_html_emails: false # set to true if you don't want html in your emails
tls:
server_name: mail.domain.com
skip_verify: false
minimum_version: TLS1.2
users_database.yml - Base utilisateurs Authelia
Nous allons générer un fichier pour stocker les utilisateurs et groupes pour Authelia :
###############################################################
# Users Database #
###############################################################
# This file can be used if you do not have an LDAP set up.
# List of users
users:
johndoe:
displayname: "John Doe"
password: "$argon2id$v=19$m=1048576,t=1,p=8$MFJSeXh0V2VKVWZEZFJiZg$EOSz2OgjIIV//MWf8"
email: johndoe@domain.com
groups:
- admins
- users
Pour générer le Hash du password, exécutez la commande suivante :
docker run --rm authelia/authelia:latest authelia hash-password 'votre-mot-de-passe'
Mise en place de la stack Docker-compose
Voici un exemple de docker-compose pour Authelia et son gestionnaire de session Redis :
version: '3.3'
services:
authelia:
container_name: authelia
image: authelia/authelia
restart: always
volumes:
- /data/Dockers/authelia/config:/config
ports:
- 9091:9091
healthcheck:
disable: true
environment:
- TZ=Europe/Paris
depends_on:
- redis
redis:
container_name: redis
image: redis:alpine
restart: always
volumes:
- /data/Dockers/authelia/redis:/data
expose:
- 6379
environment:
- TZ=Europe/Paris
Démarrez la stack :
docker-compose -p authelia -f /opt/docker-compose/authelia.yml up -d redis
docker-compose -p authelia -f /opt/docker-compose/authelia.yml up -d authelia
Générer des tokens
pip3 install pwgen
pwgen -1 25
quim5AhNgool9eimooceseegh