bouncer/doc/fr/references/layers/authn
wpetit 1881f27928
Cadoles/bouncer/pipeline/head Something is wrong with the build of this commit Details
refactor: use new rule engine package
2024-06-26 13:52:49 +02:00
..
README.md refactor: use new rule engine package 2024-06-26 13:52:49 +02:00
basic.md feat: add authn-basic layer 2024-05-21 12:10:52 +02:00
network.md feat: transform circuitbreaker layer in authn-network layer 2024-05-17 17:29:26 +02:00
oidc.md doc: fix typo 2024-05-17 12:35:34 +02:00

README.md

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.

add_header(name string, value string)

Ajouter une valeur à un entête HTTP via son nom name et sa valeur value.

set_header(name string, value string)

Définir la valeur d'un entête HTTP via son nom name et sa valeur value. La valeur précédente est écrasée.

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.

set_host(host string)

Modifier la valeur de l'entête Host de la requête.

set_url(url string)

Modifier l'URL du serveur cible.

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>"
  }
}