📚 Tutorial

# Portail captif avec OAuth et Vouchers

Par Gandalf • 22 décembre 2024 • 15 min de lecture

Vous gérez un réseau WiFi public, un gîte, un café ou simplement votre réseau invité ? Auth Guardian vous permet de contrôler qui accède à votre réseau avec un portail captif élégant, l'authentification OAuth (Google, GitHub) et un système de vouchers.

#### 🎨 Portail personnalisable

Logo, couleurs, message d'accueil entièrement configurables.

#### 🔑 OAuth2 intégré

Google, GitHub, Facebook, Twitter en quelques clics.

#### 🎟️ Système de vouchers

Générez des codes d'accès temporaires pour vos invités.

#### 🍪 Sessions sécurisées

Cookies HttpOnly, SameSite, timeouts configurables.

## 1. Installation

    opkg update
    opkg install luci-app-auth-guardian nodogsplash
    /etc/init.d/rpcd reload

## 2. Configuration du portail captif

Le portail captif intercepte les connexions HTTP et redirige vers une page d'authentification :

    # /etc/config/authguard

    config authguard 'global'
        option enabled '1'
        option interface 'br-lan'
        option auth_method 'splash'
        option session_timeout '3600'    # 1 heure
        option idle_timeout '600'        # 10 min d'inactivité

    config splash 'default'
        option enabled '1'
        option title 'Bienvenue'
        option message 'Connectez-vous pour accéder au réseau'
        option logo '/path/to/logo.png'
        option background_color '#0f172a'
        option button_color '#06b6d4'
        option require_terms '1'

## 3. Configuration OAuth

### Google Sign-In

1. Allez sur Google Cloud Console
2. Créez un projet et activez l'API "Google+ API"
3. Configurez l'écran de consentement OAuth
4. Créez des identifiants OAuth 2.0 (Application Web)
5. Ajoutez l'URI de redirection : `https://votre-routeur/auth/callback/google`

    config oauth 'google'
        option enabled '1'
        option client_id 'VOTRE_CLIENT_ID.apps.googleusercontent.com'
        option client_secret 'VOTRE_CLIENT_SECRET'
        option redirect_uri '/auth/callback/google'

### GitHub Authentication

    config oauth 'github'
        option enabled '1'
        option client_id 'VOTRE_GITHUB_CLIENT_ID'
        option client_secret 'VOTRE_GITHUB_SECRET'
        option redirect_uri '/auth/callback/github'

💡 Conseil : Pour un usage en réseau local sans accès Internet, préférez le système de vouchers ou l'authentification par splash simple.

## 4. Système de Vouchers

Les vouchers sont parfaits pour les hôtels, cafés ou événements :

    config voucher 'system'
        option enabled '1'
        option validity '86400'        # 24 heures
        option bandwidth_limit '10000' # 10 Mbps max
        option prefix 'WIFI'           # Format: WIFI-XXXX

### Générer des vouchers en CLI

    # Générer 10 vouchers
    for i in $(seq 1 10); do
        code="WIFI-$(head -c 4 /dev/urandom | hexdump -e '"%08X"' | cut -c1-4)"
        echo "$code"
    done

## 5. Bypass et Whitelist

Certains appareils peuvent contourner l'authentification :

    config bypass 'whitelist'
        # Appareils de confiance (par MAC)
        list mac 'AA:BB:CC:DD:EE:FF'  # Serveur NAS
        list mac '11:22:33:44:55:66'  # Imprimante

        # IPs fixes
        list ip '192.168.1.100'

        # Domaines autorisés sans auth
        list domain 'captive.apple.com'      # iOS
        list domain 'connectivitycheck.gstatic.com'  # Android
        list domain 'www.msftconnecttest.com'  # Windows

## 6. Sécurité des sessions

    config session 'policy'
        option max_sessions '100'
        option session_cookie 'authguard_session'
        option secure_cookie '1'       # HTTPS only
        option httponly '1'            # Pas d'accès JavaScript
        option samesite 'Strict'       # Protection CSRF

### 🔐 Sécurisez votre réseau WiFi

Installez Auth Guardian et contrôlez qui accède à votre réseau.

Voir la démo

## Conclusion

Auth Guardian transforme votre routeur OpenWrt en portail d'authentification professionnel. Que vous gériez un réseau d'entreprise, un lieu public ou simplement votre réseau invité, vous avez maintenant le contrôle total sur les accès.