bouncer/doc/fr/references/layers/authn/README.md

2.7 KiB

Les layers authn-*

Les layers authn-* permettent d'activer différents modes d'authentification au sein d'un proxy Bouncer.

Les informations liées à l'utilisateur authentifié sont ensuite injectables dans les entêtes HTTP de la requête permettant ainsi une authentification unique("SSO") basée sur les entêtes HTTP ("Trusted headers SSO").

Layers

Schéma des options

En plus de leurs options spécifiques tous les layers authn-* partagent un certain nombre d'options communes.

Voir le schéma.

Moteur de règles

L'option rules permet de définir une liste de règles utilisant un DSL définissant de manière dynamique quels entêtes seront injectés dans la requête transitant par le layer. Les règles permettent également d'interdire l'accès à un utilisateur via la fonction forbidden() (voir section "Fonctions").

La liste des instructions est exécutée séquentiellement.

Bouncer utilise le projet expr comme DSL. En plus des fonctionnalités natives du langage, Bouncer ajoute un certain nombre de fonctions spécifiques à son contexte.

Le comportement des règles par défaut est le suivant:

  1. L'ensemble des entêtes HTTP correspondant au patron Remote-* sont supprimés ;
  2. L'identifiant de l'utilisateur identifié (user.subject) est exporté sous la forme de l'entête HTTP Remote-User ;
  3. L'ensemble des attributs de l'utilisateur identifié (user.attrs) sont exportés sous la forme Remote-User-Attr-<name><name> est le nom de l'attribut en minuscule, avec les _ transformés en -.

Fonctions

forbidden()

Interdire l'accès à l'utilisateur.

set_header(name string, value string)

Définir la valeur d'une entête HTTP via son nom name et sa valeur value.

del_headers(pattern string)

Supprimer un ou plusieurs entêtes HTTP dont le nom correspond au patron pattern.

Le patron est défini par une chaîne comprenant un ou plusieurs caractères *, signifiant un ou plusieurs caractères arbitraires.

Environnement

Les règles ont accès aux variables suivantes pendant leur exécution.

user

L'utilisateur identifié par le layer.

{
  // Identifiant de l'utilisateur, tel que récupéré par le layer
  "subject": "<string>",
  // Table associative des attributs associés à l'utilisateur
  // La liste de ces attributs dépend du layer d'authentification
  "attrs": {
    "key": "<value>"
  }
}