Filtrage des données par application

EoleSSO implémente un mécanisme permettant de renvoyer des informations différentes concernant l'utilisateur en fonction de l'application qui émet la requête.

Ce mécanisme nécessite la mise en place de deux fichiers de configuration :

  • un fichier de description de l'application. Ces fichiers doivent être mis dans le répertoire /usr/share/sso/app_filters et leur nom doit se terminer par _app.ini.
  • un fichier de filtre (dans le même répertoire), devant se nommer <nom_du_filtre>.ini.

La description d'une application se fait selon le modèle suivant (exemple avec une application fictive) :

[editeurs] # nom de l'application (indicatif)

port=80 # port de l'application (facultatif)

baseurl=/providers # url de l'application

scheme=both # type de protocole : http/https/both

addr=^appserv..*.fr$ # adresse des serveurs autorisés

typeaddr=regexp # type d'adresse

filter=mon_filtre # nom du filtre à appliquer

proxy=default # proxy http nécessaire pour accéder à l'application

Si port est spécifié, il devra apparaître dans l'URL du service désirant s'authentifier. Pour que la définition fonctionne quel que soit le port (ou si le port n'est pas dans l'URL), enlevez la ligne concernant le port, ou mettez port= sans valeur

Il y a 2 types de vérification de l'adresse (typeaddr) :

  1. type ip : l'adresse donnée peut être une adresse IP ou un couple adresse/netmask.

    Les formats d'écriture suivants sont possibles :

    • 192.168.230.1
    • 192.168.230.0/255.255.255.0
    • 192.168.230.0/24
  2. type regexp : l'adresse est donnée comme une expression régulière à comparer à l'adresse DNS du client.

    Dans l'exemple : ^appserv..*.fr$ -> correspond à toutes les adresse du type par appserv.<qqe_chose>.fr

    Ces données seront comparée avec l'URL associée à la session dans le serveur SSO (dans le cadre du protocole CAS, cette URL correspond au champ service donné lors de l'obtention d'un ticket d'application).

Truc & astuce

Pour vérifier le fonctionnement d'une regexp, lancer un shell python:

>>> import re

>>> regexp = '<votre regexp>'

>>> url = '<une url à comparer avec la regexp>

>>> print re.match(regexp, url) is not None

baseurl correspond au chemin de l'application.

Dans l'exemple ci dessus, une URL du type http://appserv_test.fr:80/providers sera reconnue (A noter que http://appserv_test.fr:80/providers/toto est aussi considéré comme valide).

La partie requête de l'URL n'est pas prise en compte (dans cet exemple, http://appserv_test.fr:80/providers?variable=1&variable2=test sera considérée valide).

Pour vérifier quelle URL est reçue, vous pouvez regarder dans /var/log/rsyslog/local/eolesso/eolesso.info.log . L'URL est affichée dans les lignes commençant par : adding session for service : ....

filter indique le nom du fichier de filtre à utiliser (sans l'extension.ini) pour les applications correspondant à cette description. Voir la section suivante pour plus de détail.

proxy indique que l'utilisation d'un proxy est nécessaire pour accéder à l'application depuis la machine hébergeant le serveur EoleSSO.

si la valeur est 'default', le proxy déclaré dans la configuration (dans l'onglet general de gen_config) est utilisé. Il est aussi possible de spécifier un proxy particulier avec une valeur du type 'nom_hote:port'. Le proxy déclaré sera utilisé dans les procédures suivantes :

  • envoi d'une requête de déconnexion CAS à une application

  • envoi d'un ticket PGT à un client CAS en mode proxy