-
Notifications
You must be signed in to change notification settings - Fork 0
omigeot/SIG-CCPO
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ATTENTION: Ceci est en cours de travaux. Ce répertoire contient une expérimentation concernant la sécurisation des accès à GISMeaux. En conséquence de quoi, il est très peu recommandé de l'utiliser, sauf si farfouiller dans du code PHP ne vous fait pas peur. Et encore. Le but initial de cette branche est de tester de nouvelles idées et d'en discuter. ATTENTION (suite) : Ceci est toujours en travaux puisque l'application doit répondre aux attentes de ses utilisateurs!! Il est maintenant recommandé de l'utiliser cette ensemble d'applications étant actuellement en production. Toutefois les fichiers install.php et configuration.php sont livrés en l'état (ils nous ont aucune utilité notre site existant depuis 2004) et donc les retours d'expériences seront les bienvenus PRINCIPALES MODIFICATIONS * Regroupement des branches "intranet", "internet" et "test_ssl" en une seule branche, nommée "application". * Rationalisation des inclusions. Les fichiers PHP partagés se trouvent dans /inc, les fichiers appellés à être modifiés à l'installation sont dans /conf. * Modularisation des routines de base de données. /inc/database.php définit désormais une classe (DBpg) et une variable globale ($DB) qui embarque les anciennes fonction "tab_result" et assimilées. * Un même entête se trouve désormais au début de tous les fichiers PHP inclus. Celui-ci s'assure que les fichiers ne sont pas appellés directement. * Un même entête se trouve désormais au début de tous les autres fichiers PHP. Celui-ci positionne la constante GIS_ROOT et se charge d'inclure les fichiers utiles (via common.php). * Deux appels de fonction sont fournis pour la gestion des sessions. - Le premier, gis_session_start(), charge les données de la session si besoin. Il doit être appellé au début de chaque fichier PHP non-inclus. - Le second, gis_init(), s'occupe en plus de vérifier l'authentification et - en résumé - d'initialiser une nouvelle session si besoin. Il ne doit être appellé QUE par les "points d'entrée" de l'utilisateur dans le systême (carto.php, index.php, back_office.php, etc.). * L'authentification s'appuie désormais sur un systême de "profils" (/inc/profiles.php). Ceux-ci dérivent d'une classe "Profile" et implémentent divers mécanismes. - Tout d'abord, ils fournissent une fonction qui permet de tester si le profil s'applique ou non. Ainsi, on peut sélectionner un profil différent selon que l'utilisateur se connecte depuis une IP locale ou non, depuis une connexion sécurisée ou non, etc. - Ensuite, ils fournissent une routine d'identification. Par exemple, le "CertifiedProfile" (qui gère les authentifications par certificat SSL) extrait le nom d'utilisateur du certificat. Le profil par défaut (InternetProfile) positionne automatiquement le nom d'utilisateur à "Visiteur". Dans les cas qui s'y prêtent, cette étape récupère aussi le mot de passe. - Enfin, ils vérifient par le moyen adéquat que l'utilisateur est bien ce qu'il prétend. Dans le cas d'un certificat client, le simple fait d'avoir un certificat valide est une garantie suffisante. Dans le cas d'une authentification sur LDAP, le protil tentera juste de se connecter au serveur LDAP avec le login et le mot de passe fournis lors de l'identification. Dans le cas du "InternetProfile", l'authentification est automatiquement réussie. * L'utilisation de mapserv.php - interface à PHP/Mapscript simulant (partiellement) le comportement du CGI de Mapserver - en lieu et place du-dit CGI. L'idée étant notamment de pouvoir intégrer un cache pour les rasters. * Création d'un /index.php visant à fournir - à terme - un point d'entrée convivial vers les différentes fonctionnalités. Un tel point d'entrée devrait, notamment, modifier son contenu en fonction du profil utilisé. Pour le moment, il est majoritairement utilisé à des fins de débuguage. * Transfert des "applications" (le cadastre uniquement, pour le moment) dans /apps. L'idée serait, à terme, de mettre en place une inter- face commune aux différentes applications pour permettre l'ajout et la suppression "simple" de tels composants. Typiquement, une application devrait àtre capable de renseigner d'elle-même les tables utiles (permissions, etc.). * Transfert des notions de commune par défaut et d'application par défaut aux profils. Ceux-ci peuvent éventuellement déléguer cette sélection à un composant tiers (DB, LDAP, etc.) * Définit les permissions par rapport à un rôle (chaque utilisateur pouvant avoir plusieurs rôles) plutôt que par rapport à l'utilisateur lui-même. Ceci permettant de simplifier l'administration, l'ajout d'un nouvel utilisateur se résumant le plus souvent à le rattacher à un rôle existant. NOTES DIVERSES * L'utilisation "simple" de la branche nécessite de faire pointer un hôte virtuel Apache vers /gismeaux/application. * L'utilisation de l'authentification SSL nécessite l'ajout de directives dans Apache (SSLRequire optional) pour l'hôte virtuel SSL. * L'authentification SSL nécessite également de configurer une PKI minimaliste : une CA, un certificat serveur signé par la-dite CA et un nombre quelconque de certificats clients également signés par la CA. L'utilisation d'un outil comme XCA (http://xca.hohnstaedt.de/) peut être d'une grande aide par rapport à la manipulation manuelle des commandes OpenSSL. * La configuration de la base de données reste - pour l'essentiel - identique à celle de la branche "normale" de l'application. Quelques tables supplémentaires sont à créer dans admin_svg. (DATABASE.TXT) TRUCS ENCORE A FAIRE (SELON LE TEMPS) * Passer à un "vrai" SRID (au lieu de -1), pour pouvoir être interopérable. * Construire un outil "intégré" de configuration initiale de la DB.
About
Version simplifiée à l'extrême du SIG
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published