Institution : Université des Sciences et de la Technologie Houari Boumediene (USTHB)
Département : Département des Systèmes Informatiques
Année Universitaire : 2024/2025
Projet Proposé par : Mme Sonia ZEMMOUR, Ph.D. Student in AI - USTHB
Équipe du Projet (Groupe 17) :
- Hattab Hamza Riadh
- Nacer Bey Abderrahmane Zakaria
- Harridi Mohamed Alaaeddine
- Zouaoui Abdelmalek
- Ouattas Amine
- Introduction
- Objectifs du Projet
- Architecture Générale et Technologies Utilisées
- Instructions d'Installation et de Configuration de l'Environnement
- 4.1. Prérequis Indispensables
- 4.2. Phase 1 & 2: Installation et Configuration de Google Cloud SDK (gcloud CLI)
- 4.3. Phase 3: Mise en Place du Proxy d'Authentification Cloud SQL
- 4.4. Phase 4: Configuration et Exécution du Projet WPF
- Accès aux Ressources Cloud (Google Cloud Platform) - ÉTAPE PRÉALABLE IMPORTANTE
- Conclusion
Le présent document constitue le rapport final du projet pluridisciplinaire N°11, consacré au développement d'une Plateforme de Gestion des Thèses et Mémoires (PGTM-USTHB). Cette initiative a été entreprise en réponse aux défis inhérents aux méthodes actuelles de gestion des travaux de recherche académique au sein de l'Université des Sciences et de la Technologie Houari Boumediene (USTHB). L'ambition de ce projet est de fournir une solution numérique centralisée, moderne, et performante, apte à optimiser le cycle de vie des documents scientifiques produits par l'institution.
L'artefact principal de ce projet est une application de bureau robuste, développée en C# avec le framework Windows Presentation Foundation (WPF), et ciblant l'environnement .NET 8/9. Elle est spécifiquement conçue pour l'administration et la consultation des thèses universitaires, couvrant principalement les niveaux Master et Doctorat. L'objectif fondamental est de simplifier et de rationaliser les processus de dépôt, de validation administrative, d'indexation sémantique, de recherche multicritères, et de consultation sécurisée des thèses et mémoires. In fine, la plateforme PGTM-USTHB vise à valoriser la production scientifique de l'USTHB en améliorant significativement sa visibilité et son accessibilité pour l'ensemble de la communauté académique.
La plateforme PGTM-USTHB a été conçue dans le but de moderniser et de centraliser la gestion des thèses et mémoires au sein de l'USTHB. Les objectifs principaux de ce projet englobent l'amélioration substantielle de l'accessibilité et de la sécurité des travaux de recherche. Cet accomplissement est rendu possible grâce à une solution logicielle intégrée de manière transparente avec l'écosystème des services Google Cloud. La plateforme offre un ensemble de fonctionnalités clés, incluant l'authentification sécurisée des utilisateurs avec une gestion affinée des rôles (Administrateur, Étudiant, Simple Utilisateur), des outils de recherche avancée performants, la consultation intégrée des documents PDF, un système de gestion personnalisée des favoris et des profils utilisateurs, ainsi que des interfaces d'administration dédiées pour une gestion efficace du système.
L'application PGTM-USTHB est une application de bureau développée en langage C# avec le framework Windows Presentation Foundation (WPF). Sa conception repose sur une architecture en couches, une approche qui favorise la modularité, la maintenabilité et l'évolutivité du système. Un aspect central de cette architecture est son intégration native avec les services Google Cloud, garantissant robustesse et scalabilité.
- Frontend (Couche Présentation) : C# avec WPF (.NET 8/9). Le langage XAML (Extensible Application Markup Language) est utilisé pour la définition déclarative et le design des interfaces utilisateur, permettant une séparation claire entre la logique de présentation et la logique métier.
- Authentification : Firebase Authentication. Ce service de Google est utilisé pour gérer l'identification des utilisateurs, en s'appuyant sur le mécanisme standard et sécurisé Email/Mot de passe.
- Base de Données : Google Cloud SQL. Une instance MySQL, nommée
thesis-manager-db
, héberge la base de données relationnellegestion_theses
, qui structure et stocke toutes les métadonnées relatives aux thèses, utilisateurs et autres entités du système. - Stockage de Fichiers (PDFs des thèses) : Google Cloud Storage. Un bucket dédié, configuré sous le nom
thesis-manager-files-hr-5173
, est utilisé pour l'archivage sécurisé et la distribution des fichiers PDF des thèses et mémoires. - Communication Backend (pour URLs signées sécurisées) : Google Cloud Functions. Deux fonctions serverless,
generateUploadUrl
etgenerateReadUrl
, sont déployées pour la génération dynamique et sécurisée d'URLs d'accès temporaires aux fichiers stockés, renforçant ainsi la sécurité des documents. - Accès Base de Données Locale (via Proxy sécurisé) : ADO.NET, utilisant le package
MySql.Data
. Cette technologie permet la communication entre l'application WPF et l'instance Cloud SQL, transitant de manière sécurisée à travers le Cloud SQL Auth Proxy.
L'exécution et l'évaluation de l'application PGTM-USTHB en environnement local nécessitent une configuration spécifique et rigoureuse. Les étapes suivantes détaillent la mise en place de cet environnement, indispensable pour établir une communication sécurisée et pleinement fonctionnelle avec les services Google Cloud sous-jacents.
Avant d'entreprendre l'installation, veuillez vous assurer de disposer des éléments suivants :
- Un système d'exploitation Windows (versions récentes recommandées).
- L'environnement de développement intégré Visual Studio 2022 (ou une version ultérieure compatible avec .NET 8/9 et le développement WPF).
- Un compte Google actif (un compte Gmail est préférable pour une intégration facilitée avec les services GCP).
- Accès Autorisé au Projet Google Cloud Platform
thesis-manager-backend
: Cet accès est un prérequis fondamental et non négociable. Il vous sera personnellement accordé par l'équipe du projet après que vous ayez communiqué votre adresse e-mail Google. Veuillez consulter impérativement la section 5 ("Accès aux Ressources Cloud") de ce document pour la procédure détaillée à suivre.
L'interface de ligne de commande gcloud
est un outil officiel de Google, essentiel pour l'authentification de votre environnement local auprès de Google Cloud et pour l'exécution du proxy de base de données.
-
Installation de Google Cloud SDK :
- Accédez à la page officielle : Guide d'installation de Google Cloud SDK.
- Suivez attentivement les instructions spécifiques à l'environnement Windows, en privilégiant l'utilisation de l'installateur interactif (
GoogleCloudSDKInstaller.exe
). - Pendant le processus d'installation, il est généralement conseillé de conserver les sélections de composants proposées par défaut. Veillez particulièrement à ce que les options telles que "Add Cloud SDK tools to your PATH" et "Enable command completion" soient cochées. Si l'installateur vous propose d'installer une version groupée de Python, il est recommandé d'accepter.
- Une fois l'installation achevée, il est impératif de FERMER puis de ROUVRIR toutes les fenêtres de l'Invite de commandes (Command Prompt) ou de PowerShell. Cette action est nécessaire pour s'assurer que les modifications apportées aux variables d'environnement système (notamment le PATH) sont correctement prises en compte.
- Vérification : Pour confirmer le succès de l'installation, ouvrez une nouvelle instance de PowerShell ou de l'Invite de commandes et tapez la commande
gcloud --version
. Les informations de version du SDK installé devraient alors s'afficher, confirmant sa disponibilité.
-
Obtention de l'Accès au Projet GCP et Authentification de
gcloud
:- Action Préalable Cruciale : Avant de pouvoir vous authentifier avec succès via la commande
gcloud auth login
, votre compte Google doit avoir été explicitement ajouté au projet GCPthesis-manager-backend
et doté des permissions nécessaires par l'équipe de ce projet. Veuillez suivre scrupuleusement les instructions détaillées dans la section 5 ("Accès aux Ressources Cloud") pour communiquer votre adresse e-mail et obtenir cet accès. - Une fois que l'équipe du projet vous a confirmé l'octroi des accès au projet GCP, ouvrez une session PowerShell ou l'Invite de commandes et exécutez la commande suivante :
gcloud auth login
- Cette commande initiera le processus d'authentification en ouvrant automatiquement une fenêtre dans votre navigateur par défaut. Connectez-vous en utilisant le compte Google pour lequel l'accès au projet GCP a été préalablement configuré. Suivez les instructions à l'écran pour accorder les permissions requises par le SDK. Une fois l'authentification réussie, vous pourrez fermer l'onglet du navigateur.
- Le terminal devrait alors afficher un message confirmant que vous êtes bien connecté et authentifié.
- Action Préalable Cruciale : Avant de pouvoir vous authentifier avec succès via la commande
-
Configuration des Identifiants ADC (Application Default Credentials) :
- Dans le même terminal (et après vous être assuré que l'étape
gcloud auth login
a été complétée avec succès et que vos accès au projet sont confirmés), exécutez la commande :gcloud auth application-default login
- De nouveau, votre navigateur s'ouvrira. Authentifiez-vous avec le même compte Google utilisé précédemment et accordez les permissions requises. Fermez ensuite l'onglet du navigateur.
- L'interface de ligne de commande (PowerShell ou Invite de commandes) devrait afficher un message confirmant la sauvegarde des identifiants sur votre machine, par exemple :
"Credentials saved to file: [...]"
. -
Importance : Cette commande génère un fichier d'identifiants sécurisé sur votre machine locale. Ce fichier est utilisé par des outils tels que le Cloud SQL Auth Proxy et d'autres bibliothèques Google pour s'authentifier automatiquement en votre nom lors de l'exécution de l'application. L'authentification se base sur les permissions qui ont été préalablement accordées à votre compte sur le projet GCP.
- Dans le même terminal (et après vous être assuré que l'étape
-
Configuration du Projet
gcloud
par Défaut :- Pour que les commandes
gcloud
ultérieures ciblent correctement le projet concerné par cette application, exécutez :gcloud config set project thesis-manager-backend
-
Importance : Cette commande configure l'outil
gcloud
pour que toutes les opérations subséquentes s'appliquent par défaut au projet GCPthesis-manager-backend
, évitant ainsi d'avoir à spécifier le projet pour chaque commande.
- Pour que les commandes
Le Cloud SQL Auth Proxy est un utilitaire fourni par Google Cloud qui permet d'établir un tunnel de connexion TCP/IP sécurisé entre votre machine de développement locale et votre instance Cloud SQL hébergée sur GCP, sans nécessiter de configuration complexe de pare-feu ou d'adresses IP statiques.
-
Téléchargement de l'Exécutable du Proxy :
- Accédez à la documentation officielle pour le téléchargement du proxy : Cloud SQL Auth Proxy - Installation.
- Téléchargez la version exécutable (
.exe
) appropriée pour les systèmes Windows 64-bit. - Après le téléchargement, localisez le fichier (qui pourrait être nommé, par exemple,
cloud-sql-proxy.x64.exe
). Pour simplifier l'utilisation dans les commandes futures, il est conseillé de le renommer encloud_sql_proxy.exe
. - Il est recommandé de créer un dossier dédié et facilement accessible pour cet outil, par exemple
C:\CloudSDKTools\
, et d'y déplacer le fichiercloud_sql_proxy.exe
renommé.
-
Nom de Connexion de l'Instance Cloud SQL :
- Le nom de connexion complet de l'instance Cloud SQL, qui est requis par le proxy pour identifier la base de données cible, est le suivant :
thesis-manager-backend:us-central1:thesis-manager-db
- Le nom de connexion complet de l'instance Cloud SQL, qui est requis par le proxy pour identifier la base de données cible, est le suivant :
-
Exécution du Proxy :
- Ouvrez une NOUVELLE fenêtre PowerShell ou Command Prompt distincte. Il est crucial que cette fenêtre reste ouverte et active pendant toute la durée d'utilisation de l'application WPF, car elle maintient la connexion sécurisée à la base de données.
- Dans cette nouvelle fenêtre de terminal, naviguez jusqu'au dossier où vous avez placé l'exécutable du proxy :
cd C:\CloudSDKTools
- Exécutez ensuite la commande de lancement du proxy. Si vous utilisez PowerShell, il est généralement nécessaire de préfixer la commande par
.\
pour indiquer une exécution locale :.\cloud_sql_proxy.exe thesis-manager-backend:us-central1:thesis-manager-db
- Vérification : Après l'exécution de la commande, le terminal devrait afficher des messages indiquant que le proxy est en écoute sur l'adresse locale
127.0.0.1:3306
et qu'il est "Ready for new connections". Si des erreurs d'authentification ou de connexion apparaissent à cette étape, cela indique généralement que votre compte Google n'a pas encore été doté des permissions requises sur le projet GCP. Dans ce cas, veuillez impérativement vous référer à la section 5 pour la procédure d'obtention des accès. -
AVERTISSEMENT CRITIQUE : Vous devez impérativement LAISSER CETTE FENÊTRE DE PROXY ACTIVE pendant toute la durée où vous utilisez ou testez l'application WPF. C'est ce processus qui maintient le tunnel sécurisé vers la base de données distante. Si vous fermez cette fenêtre, l'application perdra sa connexion à la base de données et ne pourra plus fonctionner correctement.
-
Ouverture du Projet dans Visual Studio :
- Lancez votre environnement de développement intégré Visual Studio.
- Depuis l'écran d'accueil ou le menu "Fichier", sélectionnez l'option "Ouvrir un projet ou une solution".
- Naviguez jusqu'au dossier racine contenant le code source du projet PGTM-USTHB (celui où se trouve le fichier de solution
DataGrid.sln
) et ouvrez ce fichierDataGrid.sln
.
-
Restauration des Paquets NuGet :
- Laissez à Visual Studio le temps de charger complètement la solution. Il est possible qu'une invite s'affiche automatiquement pour restaurer les paquets NuGet nécessaires au projet ; si c'est le cas, acceptez cette restauration.
- Si aucune invite n'apparaît, vous pouvez initier la restauration manuellement. Pour ce faire, allez dans le menu "Outils" -> "Gestionnaire de paquets NuGet" -> "Gérer les paquets NuGet pour la solution...". Dans la fenêtre qui s'ouvre, un bouton "Restaurer" est souvent disponible (généralement en haut à droite de la fenêtre du gestionnaire). Vous pouvez également consulter l'onglet "Installés" pour vérifier la présence des dépendances clés telles que
MySql.Data
(pour la connexion MySQL),Google.Cloud.Storage.V1
(pour l'interaction avec Google Cloud Storage),Newtonsoft.Json
(pour la manipulation JSON), etMahApps.Metro.IconPacks
(pour les icônes). Si des paquets essentiels sont manquants, vous pouvez les rechercher et les installer via cette interface.
-
Configuration des Fichiers de l'Application (
AppConfig.cs
ouApp.config
) :- Dans l'Explorateur de solutions de Visual Studio (généralement ancré à droite de l'interface), localisez le fichier
AppConfig.cs
. Il se trouve habituellement soit directement sous le nœud du projetDataGrid
, soit dans un sous-dossier dédié tel queServices
. Double-cliquez sur ce fichier pour l'ouvrir dans l'éditeur de code. - Important : Les valeurs fournies dans l'exemple ci-dessous sont celles configurées pour l'environnement de développement. Notamment, le mot de passe pour l'utilisateur de base de données
thesis_app_user
est123
.// Contenu attendu du fichier : AppConfig.cs // Note : Si une migration vers App.config a été effectuée pour la gestion des secrets (meilleure pratique), // ces valeurs seraient alors lues depuis le fichier App.config et non codées en dur ici. public static string FirebaseApiKey { get; } = "AIzaSyBlIITlxpM3I_hova-rMnnL8JcFlBLpHFs"; // Clé API Web Firebase du projet public static string CloudSqlConnectionString { get; } = "Server=127.0.0.1;Port=3306;Database=gestion_theses;Uid=thesis_app_user;Pwd=123;SslMode=None;"; // Chaîne de connexion via le proxy public static string StorageBucket { get; } = "thesis-manager-files-hr-5173"; // Nom du bucket Google Cloud Storage // URLs des Cloud Functions pour la génération des URLs signées d'accès aux fichiers public const string GenerateUploadUrlEndpoint = "[https://us-central1-thesis-manager-backend.cloudfunctions.net/generateUploadUrl](https://us-central1-thesis-manager-backend.cloudfunctions.net/generateUploadUrl)"; public const string GenerateReadUrlEndpoint = "[https://us-central1-thesis-manager-backend.cloudfunctions.net/generateReadUrl](https://us-central1-thesis-manager-backend.cloudfunctions.net/generateReadUrl)";
- Note Concernant
App.config
: Si le projet a été configuré pour externaliser les informations sensibles et les configurations dans un fichierApp.config
(ce qui constitue une meilleure pratique pour la sécurité et la flexibilité), c'est ce fichierApp.config
(situé à la racine du projet) que vous devrez vérifier ou modifier. Il contiendrait alors des entrées similaires à celles-ci, imbriquées dans la section<appSettings>
: Exemple de contenu pourApp.config
(si cette méthode de configuration est utilisée) :Si<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="FirebaseApiKey" value="AIzaSyBlIITlxpM3I_hova-rMnnL8JcFlBLpHFs"/> <add key="FirebaseAuthBaseUrl" value="[https://identitytoolkit.googleapis.com/v1/accounts](https://identitytoolkit.googleapis.com/v1/accounts)"/> <add key="FirebaseAuthSecureTokenUrl" value="[https://securetoken.googleapis.com/v1/token](https://securetoken.googleapis.com/v1/token)"/> <add key="CloudSqlConnectionString" value="Server=127.0.0.1;Port=3306;Database=gestion_theses;Uid=thesis_app_user;Pwd=123;SslMode=None;"/> <add key="StorageBucket" value="thesis-manager-files-hr-5173"/> <add key="GenerateUploadUrlEndpoint" value="[https://us-central1-thesis-manager-backend.cloudfunctions.net/generateUploadUrl](https://us-central1-thesis-manager-backend.cloudfunctions.net/generateUploadUrl)"/> <add key="GenerateReadUrlEndpoint" value="[https://us-central1-thesis-manager-backend.cloudfunctions.net/generateReadUrl](https://us-central1-thesis-manager-backend.cloudfunctions.net/generateReadUrl)"/> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> <!-- Assurez-vous que cette version du .NET Framework correspond à la cible de votre projet --> </startup> </configuration>
App.config
est utilisé, la classeAppConfig.cs
serait alors modifiée pour lire ces valeurs dynamiquement en utilisantSystem.Configuration.ConfigurationManager.AppSettings["NomDeLaCle"]
. - Après toute modification nécessaire, sauvegardez le fichier de configuration concerné.
- Dans l'Explorateur de solutions de Visual Studio (généralement ancré à droite de l'interface), localisez le fichier
-
Compilation de la Solution :
- Dans l'interface de Visual Studio, accédez au menu "Build" (ou "Générer" en français) et sélectionnez l'option "Générer la solution" (ou utilisez le raccourci clavier F6 ou Ctrl+Shift+B).
- Surveillez attentivement la fenêtre "Sortie" (généralement située dans la partie inférieure de l'IDE). Un message indiquant la réussite de la compilation, tel que
"Génération: 1 a réussi, 0 a échoué..."
, devrait s'afficher. Si des erreurs de build sont signalées à ce stade, elles devront être analysées et corrigées avant de pouvoir exécuter l'application.
-
Exécution de l'Application :
- Vérifiez une dernière fois que la fenêtre du terminal exécutant le Cloud SQL Auth Proxy est toujours active et affiche le message "Ready for new connections".
- Dans Visual Studio, lancez l'application en mode débogage en appuyant sur la touche F5 ou en cliquant sur le bouton vert "Démarrer" (qui porte souvent le nom du projet exécutable).
-
Attendu : La fenêtre de connexion de l'application (
Login.xaml
) devrait apparaître à l'écran, signifiant que l'application a démarré correctement.
-
Test de la Connexion à l'Application :
- Utilisez des identifiants de test valides qui vous auront été communiqués par l'équipe du projet. Alternativement, si la fonctionnalité d'inscription est activée et fonctionnelle, vous pouvez procéder à la création d'un nouveau compte utilisateur.
-
Attendu : Après une authentification réussie, la fenêtre principale de l'application (
MainWindow
) devrait s'ouvrir, vous donnant accès aux différentes fonctionnalités de la plateforme. En cas d'échec de la connexion, consultez la fenêtre "Sortie de débogage" dans Visual Studio pour identifier d'éventuels messages d'erreur ou exceptions levées par l'application. Vérifiez également la fenêtre du Cloud SQL Auth Proxy pour tout message pertinent concernant l'état de la connexion à la base de données.
Vous devriez maintenant être pleinement configuré pour utiliser et évaluer l'application PGTM-USTHB. N'oubliez pas de maintenir la fenêtre du Cloud SQL Auth Proxy active pendant toute la durée de son utilisation.
L'application PGTM-USTHB, pour son fonctionnement optimal et l'accès à ses fonctionnalités de base de données et de stockage de fichiers, s'appuie sur un ensemble de services hébergés sur Google Cloud Platform (GCP). Ces services incluent Firebase Authentication (pour la gestion des identités et l'authentification des utilisateurs), Cloud SQL (pour la base de données relationnelle MySQL qui stocke les métadonnées), Cloud Storage (pour le stockage sécurisé des fichiers PDF des thèses et mémoires), et Cloud Functions (pour certaines logiques backend telles que la génération d'URLs signées pour l'accès aux fichiers). Tous ces services sont configurés et gérés au sein du projet GCP spécifiquement dédié à cette application, nommé thesis-manager-backend
.
Afin que vous puissiez configurer votre environnement de développement local pour qu'il interagisse de manière authentifiée et sécurisée avec ces services cloud (notamment pour l'authentification via l'outil gcloud CLI
décrite à l'étape 4.2.2 et pour le bon fonctionnement du Cloud SQL Auth Proxy qui établit la connexion à la base de données), il est impératif que votre compte Google soit préalablement autorisé et doté des permissions nécessaires sur notre projet GCP. Sans ces permissions, vous ne pourrez pas vous authentifier auprès des services Google Cloud, et par conséquent, l'application ne pourra pas fonctionner.
Procédure Détaillée pour Obtenir l'Accès :
Veuillez prendre contact avec Hattab Hamza Riadh par courrier électronique à l'adresse suivante. Dans votre email, merci de fournir votre adresse email Google (compte Gmail) que vous souhaitez utiliser pour accéder aux ressources du projet :
hhamzariadh@gmail.com
Il est important de préciser dans l'objet ou le corps de votre email qu'il s'agit d'une demande d'accès au projet GCP thesis-manager-backend
dans le cadre de l'évaluation du Projet Pluridisciplinaire N°11.
Une fois votre demande et votre adresse email reçues, un accès avec le rôle "Propriétaire" (Owner) vous sera accordé sur le projet GCP thesis-manager-backend
ainsi que sur le projet Firebase associé. Ce niveau d'accès vous donnera toutes les permissions nécessaires pour visualiser les configurations, les logs, gérer la base de données, inspecter le stockage des fichiers, et interagir pleinement avec tous les services cloud utilisés par l'application, facilitant ainsi une évaluation complète.
Vous recevrez une notification par retour d'email lorsque cet accès sera effectivement configuré et actif. Ce n'est qu'après avoir reçu cette confirmation que vous pourrez finaliser avec succès les étapes d'authentification gcloud
(décrites à la section 4.2) et démarrer correctement le Cloud SQL Auth Proxy (décrit à la section 4.3), permettant ainsi à l'application WPF de se connecter à la base de données.
La plateforme PGTM-USTHB a été développée avec l'ambition d'offrir une solution logicielle moderne, robuste et conviviale, destinée à optimiser la gestion des thèses et mémoires au sein de l'université. Les instructions détaillées fournies dans ce document ont pour objectif de vous guider à travers le processus de mise en place d'un environnement de développement et d'exécution pleinement fonctionnel. L'étape cruciale de l'obtention des accès nécessaires au projet cloud a été particulièrement soulignée afin de garantir une expérience de configuration et d'évaluation aussi fluide que possible.
Pour toute question, clarification ou besoin d'assistance supplémentaire durant ce processus, n'hésitez pas à prendre contact avec les membres de l'équipe du projet.