2.5 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
authn-oidc
- Authentification OpenID Connectauthn-network
- Authentification par origine d'accès réseau
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.
Règles d'injection d'entêtes
L'option headers.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.
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:
- L'ensemble des entêtes HTTP correspondant au patron
Remote-*
sont supprimés ; - L'identifiant de l'utilisateur identifié (
user.subject
) est exporté sous la forme de l'entête HTTPRemote-User
; - L'ensemble des attributs de l'utilisateur identifié (
user.attrs
) sont exportés sous la formeRemote-User-Attr-<name>
où<name>
est le nom de l'attribut en minuscule, avec les_
transformés en-
.
Fonctions
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>"
}
}