#1 Wed 01 July 2015 15:56
- bastaw
- Juste Inscrit !
- Date d'inscription: 1 Jul 2015
- Messages: 2
Geoserver et base de données postgresql
Bonjour,
J'ai dispose des services wfs sur geoserver et j'ai activé la sécurité. Donc ils ne sont plus accessibles.
En plus de ça, je veux conditionner l'accès à ce service wfs par validation de l'utilisateur connecté.
L'idée est d'intercepter le user et aller chercher dans une table postgres s'il existe.
Problème: je ne vois pas techniquement comment faire ça. une piste ???
Merci
Hors ligne
#2 Wed 01 July 2015 16:42
- Pivès001
- Participant actif
- Date d'inscription: 23 Jan 2008
- Messages: 138
Re: Geoserver et base de données postgresql
Bonjour,
pour récupérer l'utilisateur : CURRENT_USER
https://msdn.microsoft.com/en-us/library/ms176050.aspx
Ensuite il faut comparer cette valeur à ta table utilisateur, le plus simple étant une jointure (INNER JOIN).
Hors ligne
#3 Thu 02 July 2015 10:46
- bastaw
- Juste Inscrit !
- Date d'inscription: 1 Jul 2015
- Messages: 2
Re: Geoserver et base de données postgresql
Bonjour,
pour récupérer l'utilisateur : CURRENT_USER
https://msdn.microsoft.com/en-us/library/ms176050.aspx
Ensuite il faut comparer cette valeur à ta table utilisateur, le plus simple étant une jointure (INNER JOIN).
Bonjour,
Merci pour votre réponse.
Je n'utilise pas sql maintenant. Je veux déjà savoir à quel niveau dans geoserver je configure l'accès à ma BD.
Ensuite, à quel endroit je peux écrire du code pour comparer le user et activer le service.
Hors ligne
#4 Fri 24 July 2015 19:18
- Franck Theeten
- Juste Inscrit !
- Date d'inscription: 9 Sep 2014
- Messages: 9
Re: Geoserver et base de données postgresql
Bonjour,
Le problème est lié à la sécurité de Geoserver plutôt qu'à PostgreSQL (il correspond en fait à cette discussion: http://georezo.net/forum/viewtopic.php?id=59632), et est dépendant du logiciel qui effectue l'authentification ainsi que de la complexité des filtres. S'il s'agît de GeoServer lui-même, et si les règles d'accès que vous voulez définir ne sont pas trop complexes (avec une granularité qui dépend soit du workspace soit de la couche), vous pouvez définir ces règles dans les rôles de GeoServer, eux-même associés à des groupes auxquels appartiennent les comptes utilisateurs de Geoserver.
Si l'authentification est faite par un logiciel tiers et/ou les règles sont plus complexes , j'envisagerais deux types de solutions:
-Si vous utilisez une base de données pour stocker les couches, une solution possible est d'associer chacune des règles à un workspace (Geoserver), un rôle (Geoserver) et à un rôle (DB) à chaque fois différents, et de veiller à ce que les contraitnes de lecture et d'écriture les plus restrictives soient directement définies au niveau des tables et du rôle de la DB.
- dans le cas de règles encore plus complexes (par exemple qui prennent en compte le "referer" HTTP de la requête) vous pouvez "proxyfier" GeoServer; au moyen (par exemple) d'Apache , en recourant à des RewriteRules, qui filtrent elles-mêmes les requêtes HTTP, ou bien les redirigent vers un script ad-hoc appliquant les contraintes (par exemple en se connectant à la base de données qui les stocke) avant de servir d'intermédiaire entre Apache et Geoserver (via des libraires telles que cURL...) . Si je ne m'abuse sur Geoserver 2.5 et 2.6 il est nécessaire de recourir à ce détour pour appliquer des règles interdisant un protocole tout en l'autorisant pour différentes couches d'un même workspace, mais cela a peut-être changé sur les versions ultérieures .
Dernière modification par Franck Theeten (Fri 24 July 2015 21:24)
Hors ligne