EirbConnect est un service d'authentification pensé pour connecter les étudiants de l'ENSEIRB-MATMECA aux services de l'école créés par les étudiants (dont Eirbware et le BDE). Il permet également aux anciens élèves de l'école de continuer de se connecter aux services associatifs apprès suppression leur compte CAS.
- Technologies
- Installation
- Docker
- Utilisation
Framework: FastAPI Database: MongoDB
- MongoDB
Les collections suivantes seront créées automatiquement :
- services : liste des services qui sont autorisés à utiliser EirbConnect
- assos : liste des associations (pour assos.eirb.fr)
- utilisateurs : liste des utilisateurs
- roles : liste de leurs rôles dans les associations
- Python
python3 -m venv venvsource venv/bin/activatepip install -r requirements.txtVoici un exemple de fichier .env à créer dans app :
touch app/.envMONGO_URI = localhost:27017
# auth
# à générer avec openssl rand -hex 32
SECRET_KEY = "<clé secrète pour les tokens JWT>"
ACCES_TOKEN_EXPIRE_MINUTES = 30
ALGORITHM = "HS256"
# Config pour docker
APP_URL = "http://0.0.0.0:8080"
./run.shdocker build -t eirb_connect .ocker run -d -p 8000:80 -e MONGO_URI=localhost:27017 --name EirbConnect eirb_connectPage permettant de diriger vers /register ou /login.
Paramètres:
- service_url: URL de redirection après authentification d'un des services whitelisté (optionnel)
Sur cette page, l'utilisateur peut se connecter avec son identifiant CAS et un mot de passe ou alors se connecter avec le CAS (redirection vers /api/caslogin).
Paramètres:
- service_url: URL de redirection après authentification d'un des services whitelisté (optionnel)
Redirige l'utilisateur vers le CAS Bordeaux INP, récupère les informations de l'utilisateur puis le redirige vers une page de création de compte. Sur cette page l'utilisateur est alors invité à renseigner son mail personnel et un mot de passe.
Paramètres:
- token: token JWT de l'utilisateur
Permet de récupérer les informations de l'utilisateur après authentification.
Body:
- cas_id: identifiant de connexion CAS
- password: mot de passe EirbConnect associé à cas_id
- service_url: URL de redirection après authentification d'un des services whitelisté (optionnel)
Renvoie :
403siservice_urlne fait pas parti des services whitelistés404si le couple(cas_id, password)ne correspond pas à un utilisateur303redirige versservice_urlsi l'authentification réussie
Si service_url n'est pas EirbConnect, un token JWT est créé et est passé en query comme paramètre token
Paramètres:
- service_url: URL de redirection après authentification d'un des services whitelisté (optionnel)
Permet d'idientifier un utilisateur avec le CAS Bordeaux INP de manière transparente pour un utilisateur qui a un compte EirbConnect.
Si l'utilisateur n'a pas de compte EirbConnect, il sera redirigé vers la page de création de compte.
Stocke associe service_url à un redirect_id unique.
Renvoie :
403siservice_urlne fait pas parti des services whitelistés- Redirige vers
CAS_PROXYsi la variable est définie dans le.env - Redirige vers
CAS_SERVICE_URLsinon
Paramètres:
- redirect_id (int): identifiant de redirection pour rediriger après l'authentification
- ticket: ticket permettant de valider l'authentification
Point de redirection venant du CAS après authentification.
Renvoie :
403si le ticket n'est pas valide- Redirection vers
/registersi l'utilisateur n'a pas de compte EirbConnect - Redirige vers l'url associée à redirect_id s'il en existe une
- Sinon, retourne les informations de l'utilisateur
Paramètres:
- redirect_id (int): identifiant de redirection pour rediriger après l'authentification
- token: token d'authentification JWT
- email: adresse mail de l'utilisateur
- password: mot de passe de l'utilisateur
Créé un utilisateur dans la base de donnée d'EirbConnect
Renvoie :
403si le token n'est pas valide- Redirige vers l'url associée à redirect_id s'il en existe une
- Sinon, retourne les informations de l'utilisateur
Déconnecte l'utilisateur du service.