banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Pivès001 a écrit:

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

 

Pied de page des forums

Powered by FluxBB