Package Laravel d'authentification SSO Kerberos via la variable serveur REMOTE_USER.
- Authentification automatique via
REMOTE_USER(Apache/Nginx Kerberos) - Gestion des demandes d'accès pour les comptes sans rôle
- Mode simulation pour les environnements de développement
- Composants Livewire inclus (access-denied, request-access, simulate-kerberos, simulation-banner)
- Migrations, seeders et commandes artisan inclus
Production (dépôt VCS privé) :
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/moko-github/kerberos-auth"
}
]
}Développement (chemin local) :
{
"repositories": [
{
"type": "path",
"url": "/chemin/vers/kerberos-auth",
"options": { "symlink": true }
}
]
}# Production
composer require moko-github/kerberos-auth
# Développement (path local, pas encore de tag)
composer require moko-github/kerberos-auth:@devphp artisan kerberos:installSans option, la commande pose des questions interactives pour les seeders. Sans réponse, les valeurs par défaut (entre crochets) s'appliquent.
◆ Installation de l'authentification Kerberos...
● Exécuter les seeders Kerberos ? (yes/no) [yes]
● Inclure le RolesSeeder (crée les rôles Admin et User) ? (yes/no) [yes]
Cette commande effectue automatiquement :
- Ajout des middlewares dans
bootstrap/app.php - Ajout des champs
kerberosetrole_iddansapp/Models/User.php - Ajout des routes dans
routes/web.php - Configuration du scheduler dans
routes/console.php - Ajout des variables d'environnement dans
.env - Exécution des migrations et des seeders (selon les réponses)
Toutes les étapes sont idempotentes : relancer
kerberos:installne duplique rien. Si une injection automatique échoue, un message⚠indique les lignes à ajouter manuellement.
| Option | Effet |
|---|---|
| (aucune) | Questions interactives pour les seeders |
--no-seed |
Ignore tous les seeders sans poser de question |
--no-roles |
Ignore uniquement le RolesSeeder sans poser de question |
php artisan kerberos:install --no-seed # migrations uniquement
php artisan kerberos:install --no-roles # migrations + KerberosSetupSeeder uniquementLes flags ont la priorité sur les clés de config
install.run_seedersetinstall.seed_roles.
Crée deux rôles en base : Admin et User.
À utiliser si votre application s'appuie sur le système de rôles fourni par ce package (MokoGithub\KerberosAuth\Models\Role). À ignorer (--no-roles) si vous utilisez un autre système de rôles (Spatie Permission, rôles personnalisés, etc.).
Crée un compte administrateur de test (admin@example.com / password) avec l'identifiant Kerberos admin@krb.example.com, et assigne le rôle User aux utilisateurs existants sans rôle.
À utiliser pour initialiser la base lors d'une première installation. À ignorer (--no-seed) si vous gérez vos propres données initiales.
Note : si
App\Enums\UserStatusexiste dans l'application, le compte admin est créé avec le statutACTIVE.
Publiez le fichier de configuration pour le personnaliser :
php artisan vendor:publish --tag=kerberos-configCela crée config/kerberos.php dans votre application.
KERBEROS_ENABLED=false # Active l'authentification Kerberos
KERBEROS_SERVER_VAR=REMOTE_USER # Variable serveur contenant le principal
KERBEROS_FALLBACK_AUTH=true # Autorise la connexion classique en fallback
KERBEROS_SIMULATION_MODE=false # Active le mode simulation (dév uniquement)
KERBEROS_ADMIN_EMAILS= # Emails admins (séparés par virgule)
KERBEROS_ADMIN_NOTIFICATION_MODE=immediate # 'immediate' ou 'disabled'
KERBEROS_AUTO_CLEANUP_DAYS=30 # Rétention des tentatives en jours
KERBEROS_ALLOWED_DOMAINS= # Domaines autorisés (vide = tous)Par défaut, le middleware Kerberos exclut automatiquement ces routes :
access-denied, access-request.create, access-request.store, logout, livewire.*
Pour ajouter vos propres exclusions :
// config/kerberos.php
'excluded_routes' => [
'admin.*', // toutes les routes d'admin
'api.*', // toutes les routes API
'webhook.pay', // une route spécifique
],Les pages /demande-acces et /acces-refuse utilisent par défaut le layout minimal embarqué dans le package (kerberos-auth::layouts.guest) — une page blanche centrée qui ne nécessite que Tailwind CSS.
Pour utiliser le layout de votre application :
// config/kerberos.php
'layout' => 'layouts.auth', // layout Laravel standard
'layout' => 'components.layouts.app', // layout Livewire Volt
'layout' => 'layouts.guest', // votre propre layout guestPour personnaliser le layout du package :
php artisan vendor:publish --tag=kerberos-views
# → resources/views/vendor/kerberos-auth/layouts/guest.blade.phpDéfinit comment le package détermine qu'un utilisateur est autorisé à se connecter.
Un utilisateur qui échoue ce contrôle reçoit le statut NO_ROLE et est redirigé vers le formulaire de demande d'accès.
Vérifie une colonne du modèle User avec un opérateur.
'role_check' => [
'strategy' => 'column',
'column' => 'role_id', // colonne à tester
'operator' => 'is_not_null', // 'is_not_null' (défaut) | 'is_null'
],operator |
Condition d'accès | Cas d'usage typique |
|---|---|---|
is_not_null |
$user->role_id !== null |
Système mono-rôle (FK) |
is_null |
$user->deleted_at === null |
Soft-delete comme garde d'accès |
'role_check' => [
'strategy' => 'relation',
'relation' => 'roles',
],'role_check' => [
'strategy' => 'callable',
'callable' => \App\Kerberos\MyAccessCheck::class,
],La classe doit implémenter MokoGithub\KerberosAuth\Contracts\UserAccessCheckInterface :
class MyAccessCheck implements UserAccessCheckInterface
{
public function check(User $user): bool
{
return $user->deleted_at === null && $user->department !== 'EXTERN';
}
}'install' => [
'run_seeders' => false,
'seed_roles' => false,
],Affiché quand un identifiant Kerberos est inconnu du système.
Route : GET /acces-refuse → access-denied
Formulaire pour les utilisateurs reconnus mais sans rôle.
Route : GET /demande-acces → access-request.create
Interface de simulation réservée au développement. Prérequis : KERBEROS_SIMULATION_MODE=true.
<livewire:auth.simulate-kerberos />Bannière visible quand une simulation est active. À placer dans le layout principal.
<livewire:auth.simulation-banner />php artisan vendor:publish --tag=kerberos-viewsCopie dans resources/views/vendor/kerberos-auth/ :
├── layouts/
│ └── guest.blade.php # layout par défaut des pages Kerberos
└── livewire/auth/
├── access-denied.blade.php
├── request-access.blade.php
├── simulate-kerberos.blade.php
└── simulation-banner.blade.php
composer update moko-github/kerberos-auth
php artisan migratephp artisan kerberos:install # Installation initiale (interactif)
php artisan kerberos:install --no-seed # Installation sans seeders
php artisan kerberos:install --no-roles # Installation sans RolesSeeder
php artisan kerberos:purge-attempts # Purge les tentatives anciennesphp artisan vendor:publish --tag=kerberos-config # config/kerberos.php
php artisan vendor:publish --tag=kerberos-views # vues + layout guest
php artisan vendor:publish --tag=kerberos-seeders # seeders