William Petit
fea0610346
All checks were successful
Cadoles/bouncer/pipeline/pr-develop This commit looks good
|
||
---|---|---|
.. | ||
basic.md | ||
network.md | ||
oidc.md | ||
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
authn-oidc
- Authentification OpenID Connectauthn-network
- Authentification par origine d'accès réseauauthn-basic
- Authentification "Basic Auth"
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:
- L'ensemble des entêtes HTTP correspondant au patron
Remote-*
sont supprimés ; - L'identifiant de l'utilisateur identifié (
vars.user.subject
) est exporté sous la forme de l'entête HTTPRemote-User
; - L'ensemble des attributs de l'utilisateur identifié (
vars.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
forbidden()
Interdire l'accès à l'utilisateur.
add_header(ctx, name string, value string)
Ajouter une valeur à un entête HTTP via son nom name
et sa valeur value
.
set_header(ctx, 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(ctx, 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(ctx, host string)
Modifier la valeur de l'entête Host
de la requête.
set_url(ctx, url string)
Modifier l'URL du serveur cible.
Environnement
Les règles ont accès aux variables suivantes pendant leur exécution.
vars.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>"
}
}