Écrire les règles et en-têtes

Lemonldap::NG gère les applications par leurs noms d'hôtes(hôtes virtuels d'Apache). Les règles sont utilisées pour protéger les applications, les en-têtes sont des en-têtes HTTP ajoutés pour transmettre des données à l'application (pour les journaux, profils,…).

Noter que les variables designées par $xx correspondent au nom de variables exportées ou de noms de macro.

Règles

Une règle associe une expression régulière à une expression booléenne Perl ou un mot-clef.

Exemples :

But Expression régulière Règle
Restreindre le répertoire /admin/ à l'utilisateur bart.simpson ^/admin/ $uid eq "bart.simpson"
Restreindre les répertoires /js/ et /css/ aux utilisateurs authentifiés ^/(css|js)/ accept
Interdire l'accès au répertoire /config/ ^/config/ deny
Ne pas restreindre /public/ ^/public/ skip
Rendre l'authentification optionnelle, mais les utilisateurs authentifiés sont vus comme tel (ce qui signifie que les données utilisateurs sont envoyées via les en-têtes HTTP) ^/forum/ unprotect
Restreindre l'accès à tout le site aux utilisateurs dont le champ description LDAP contient “LDAP administrator” (doit être déclaré dans les variables exportées) default $description eq "LDAP administrator"

La règle d'accès “default” est utilisée si aucune règle ne correspond à l'URL courante.

  • Les commentaires peuvent être utilisés pour ordonner les règles : elles sont appliquées dans l'ordre alphabétique des commentaires (ou des expressions régulières à défaut de commentaire). Voir le chapître sécurité pour apprendre comment écrire de bonnes règles.
  • Voir performances pour comprendre l'intérêt des macros et groupes dans les règles.

Les règles peuvent également être utilisées pour intercepter les URL de déconnexion :

But Expression régulière Règle
Déconnecte l'utilisateur de Lemonldap::NG le redirige vers http://intranet/ ^/index.php\?logout logout_sso http://intranet/
Déconnecte l'utilisateur de l'application courante et le redirige vers le menu ^/index.php\?logout logout_app https://auth.example.com/
Déconnecte l'utilisateur de l'application courante et de Lemonldap::NG le redirige vers http://intranet/ ^/index.php\?logout logout_app_sso http://intranet/

Par défaut, l'utilisateur est redirigé vers le portail si aucune URL n'est définie ou vers l'URL indiquée sinon.

Seule l'application est concernée par les cibles logout_app*. Faire attention avec certaines applications qui ne vérifient pas les en-têtes Lemonldap::NG après avoir créé leurs propres cookies. Dans ce cas, il faut rediriger les utilisateurs vers une page HTML qui explique qu'il est préférable de clore son navigateur après déconnexion.

En-têtes

Les en-têtes sont des associations entre un nom d'en-tête et une expression perl qui retourne une chaîne. Les en-têtes sont utilisés pour donner aux applications les données utilisateurs.

Exemples :

But Nom d'en-tête Valeur d'en-tête
Donne l'uid (pour la traçabilité) Auth-User $uid
Donne une valeur statique Some-Thing “static-value”
Donne le nom à afficher Display-Name $givenName.” ”.$surName
Done une valeur non-ascii Display-Name encode_base64($givenName." ".$surName)

Comme indiqué au chapître performances, on peut utiliser des macros, macros locales,…

  • Comme la plupart des serveurs HTTP refusent les en-têtes non-ascii, il est recommandé d'utiliser la fonction encode_base64() pour transmettre ces en-têtes
  • Les noms d'en-têtes ne doivent contenir que des lettres et le caractère ”-”

Par défaut, le cookie SSO est masqué, ainsi les applications protégées ne peuvent accéder à la clef de session SSO. Mais on peut le transmettre tout de même si nécessaire :

Session-ID => $_session_id