# Layer `authn-oidc` ## Description Ce layer permet d'ajouter une authentification OpenID Connect au service distant. Voir le tutoriel ["Ajouter une authentification OpenID Connect"](../../../tutorials/add-oidc-authn-layer.md) pour plus d'informations quant à son utilisation. ## Type `authn-oidc` ## Schéma des options Les options disponibles pour le layer sont décrites via un [schéma JSON](https://json-schema.org/specification). Elles sont documentées dans le [schéma visible ici](../../../../../internal/proxy/director/layer/authn/oidc/layer-options.json). En plus de ces options spécifiques le layer peut également être configuré via [les options communes aux layers `authn-*`](../../../../../internal/proxy/director/layer/authn/layer-options.json). ## Objet `user` et attributs L'objet `user` exposé au moteur de règles sera construit de la manière suivante: - `user.subject` sera valué avec la valeur [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) `sub` extrait de l'`idToken` récupéré lors de l'authentification ; - `user.attrs` comportera les propriétés suivantes: - L'ensemble des `claims` provenant de l'`idToken` seront transposés en `claim_` (ex: `idToken.iss` sera transposé en `user.attrs.claim_iss`) ; - `user.attrs.access_token`: le jeton d'accès associé à l'authentification ; - `user.attrs.refresh_token`: le jeton de rafraîchissement associé à l'authentification (si disponible, en fonction des `scopes` demandés par le client) ; - `user.attrs.token_expiry`: Horodatage Unix (en secondes) associé à la date d'expiration du jeton d'accès ; - `user.attrs.logout_url`: URL de déconnexion pour la suppression de la session Bouncer. **Attention** Cette URL ne permet dans la plupart des cas que de supprimer la session côté Bouncer. La suppression de la session côté fournisseur d'identité est conditionné à la présence ou non de l'attribut [`end_session_endpoint`](https://openid.net/specs/openid-connect-session-1_0-17.html#OPMetadata) dans les données du endpoint `.wellknown/openid-configuration`. ## Métriques Les [métriques Prometheus](../../metrics.md) suivantes sont exposées par ce layer. ### `bouncer_layer_authn_oidc_login_requests_total{layer=,proxy=}` - **Type:** `counter` - **Description**: Nombre total de demandes d'authentification - **Exemple** ``` # HELP bouncer_layer_authn_oidc_login_requests_total Bouncer's authn-oidc layer total login requests # TYPE bouncer_layer_authn_oidc_login_requests_total counter bouncer_layer_authn_oidc_login_requests_total{layer="my-layer",proxy="my-proxy"} 1 ``` ### `bouncer_layer_authn_oidc_login_successes_total{layer=,proxy=}` - **Type:** `counter` - **Description**: Nombre total d'authentifications réussies - **Exemple** ``` # HELP bouncer_layer_authn_oidc_login_successes_total Bouncer's authn-oidc layer total login successes # TYPE bouncer_layer_authn_oidc_login_successes_total counter bouncer_layer_authn_oidc_login_successes_total{layer="my-layer",proxy="my-proxy"} 1 ``` ### `bouncer_layer_authn_oidc_logout_total{layer=,proxy=}` - **Type:** `counter` - **Description**: Nombre total de déconnexions - **Exemple** ``` # HELP bouncer_layer_authn_oidc_logout_total Bouncer's authn-oidc layer total logouts # TYPE bouncer_layer_authn_oidc_logout_total counter bouncer_layer_authn_oidc_logout_total{layer="my-layer",proxy="my-proxy"} 1 ```