Download the PHP package friezer-85/cas-oauth-laravel without Composer
On this page you can find all versions of the php package friezer-85/cas-oauth-laravel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download friezer-85/cas-oauth-laravel
More information about friezer-85/cas-oauth-laravel
Files in friezer-85/cas-oauth-laravel
Package cas-oauth-laravel
Short Description A simple way to bridge an OAuth provider to a CAS-only application.
License GPL-3.0-only
Informations about the package cas-oauth-laravel
🔐 CAS OAuth Laravel
Un pont entre un fournisseur OAuth (Discord, Google, GitHub, etc.) et une application utilisant uniquement CAS pour l'authentification.
Ce package permet de transformer n'importe quel provider OAuth en serveur CAS, idéal pour connecter des applications legacy (comme Pronote, Moodle, etc.) à des systèmes d'authentification modernes.
📋 Table des matières
- Prérequis
- Installation
- Configuration
- Utilisation
- Providers supportés
- Dépannage
🔧 Prérequis
- PHP 8.2 ou supérieur
- Laravel 12.x
- Un serveur web (Apache/Nginx)
- Une application OAuth (Discord, Google, GitHub, etc.)
📦 Installation
1. Créer un nouveau projet Laravel
2. Installer le package
3. Installer un provider Socialite
Selon le provider OAuth que vous souhaitez utiliser :
Discord
GitHub
Autres providers
Voir la liste complète sur SocialiteProviders
⚙️ Configuration
1. Créer l'application OAuth
Pour Discord :
- Allez sur https://discord.com/developers/applications
- Cliquez sur "New Application"
- Donnez un nom à votre application
- Allez dans "OAuth2" → "General"
-
Ajoutez l'URL de redirection :
(En production, remplacez par votre vrai domaine)
- Notez votre Client ID et Client Secret
Pour Google :
- Allez sur https://console.cloud.google.com/
- Créez un nouveau projet
- Activez "Google+ API"
- Allez dans "Credentials" → "Create Credentials" → "OAuth client ID"
-
Ajoutez l'URL de redirection :
- Notez votre Client ID et Client Secret
Pour GitHub :
- Allez sur https://github.com/settings/developers
- Cliquez sur "New OAuth App"
- Remplissez les informations :
- Homepage URL :
http://cas.example.com - Authorization callback URL :
http://cas.example.com/oauth/callback
- Homepage URL :
- Notez votre Client ID et Client Secret
2. Configuration du fichier .env
Ajoutez ces lignes à votre fichier .env :
3. Configuration des services autorisés
Éditez le fichier config/services.php et ajoutez :
⚠️ Important : Les points . doivent être échappés avec \. dans les regex, sinon ils matchent n'importe quel caractère.
4. Lancer les migrations
Cette commande créera la table tickets nécessaire au fonctionnement du CAS.
Endpoints disponibles
1. Login CAS (Entrypoint)
Exemple :
Paramètres :
service(requis) : URL de redirection après authentificationrenew(optionnel) : Force une nouvelle authentification
2. Service Validate (Validation de ticket)
Retourne une réponse XML avec les informations de l'utilisateur.
3. SAML Validate (Validation SAML)
Même chose que serviceValidate mais avec le format SAML.
Flow d'authentification complet
Exemple de réponse XML
Après validation d'un ticket, vous recevrez une réponse XML de ce type :
🔌 Providers supportés
Ce package utilise Laravel Socialite et SocialiteProviders.
Providers testés
| Provider | Package | Scopes recommandés |
|---|---|---|
| Discord | socialiteproviders/discord |
identify email |
| GitHub | socialiteproviders/github |
user:email |
socialiteproviders/google |
openid,profile,email |
|
| Microsoft | socialiteproviders/microsoft |
openid,profile,email |
Ajouter un nouveau provider
- Installez le package Socialite correspondant
- Configurez
OAUTH_PROVIDERdans.env - Ajoutez les credentials dans
.env - Ajoutez les scopes appropriés
Exemple pour Microsoft :
🐛 Dépannage
Erreur 404 sur /cas/login
Cause : Les routes ne sont pas chargées
Solutions :
- Vérifiez que toutes les variables obligatoires sont dans
.env - Vérifiez que
config/services.phpcontient la clé'cas' -
Clearez le cache :
- Vérifiez les routes chargées :
Erreur "redirect_uri_mismatch"
Cause : L'URL de callback ne correspond pas à celle configurée dans votre application OAuth
Solution : Vérifiez que l'URL dans votre application OAuth est exactement :
Erreur "invalid_client"
Cause : Client ID ou Secret incorrect
Solution : Vérifiez vos credentials dans .env et dans votre application OAuth
Scope "1" au lieu des vrais scopes (Discord)
Cause : Scopes non déclarés
Solution : Déclarez au minimum le scope openid ou identify :
Ticket invalide lors de la validation
Cause : Le ticket a expiré (10 secondes par défaut)
Solution : Les tickets CAS sont à usage unique et expirent rapidement. Assurez-vous que votre application valide le ticket immédiatement après l'avoir reçu.
Service non autorisé
Cause : L'URL du service n'est pas dans la liste des services autorisés
Solution : Ajoutez l'URL dans config/services.php avec la bonne regex :
📝 Variables d'environnement
Obligatoires
| Variable | Description | Exemple |
|---|---|---|
OAUTH_PROVIDER |
Provider OAuth à utiliser | discord |
OAUTH_CLIENT_ID |
ID client OAuth | 123456789 |
OAUTH_CLIENT_SECRET |
Secret client OAuth | abcdef123456 |
Optionnelles
| Variable | Description | Défaut | Exemple |
|---|---|---|---|
CAS_PROPERTY |
Propriété utilisée pour le user CAS | id |
email |
OAUTH_SCOPES |
Scopes OAuth demandés | openid,profile,email |
identify email |
OAUTH_PARAMS |
Paramètres OAuth personnalisés | ` |prompt=consent` |
🔒 Sécurité
- Les tickets CAS expirent après 10 secondes
- Les tickets sont à usage unique
- Les services doivent être explicitement autorisés dans
config/services.php - Utilisez HTTPS en production
- Ne commitez jamais votre
.envdans Git
📄 Licence
Ce projet est sous licence GNU General Public License v3.0.
⭐ Si ce projet vous a aidé, n'hésitez pas à lui donner une étoile sur GitHub !