62 lines
2.4 KiB
Markdown
62 lines
2.4 KiB
Markdown
# 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`](./oidc.md) - Authentification OpenID Connect
|
|
|
|
## 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](../../../../../internal/proxy/director/layer/authn/layer-options.json).
|
|
|
|
## 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`](https://expr-lang.org/) 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>` 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.
|
|
|
|
```json
|
|
{
|
|
// 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>"
|
|
}
|
|
}
|
|
```
|