Mise en cache du fournisseur oidc pour réduire la pression sur l'endpoint d'auto-configuration #47

Closed
opened 2025-03-07 10:10:38 +01:00 by wpetit · 0 comments
Owner

Description

Il est nécessaire de mettre en cache le oidc.Provider dans la méthode getClient() de internal/proxy/director/layer/authn/oidc/authenticator.go afin de diminuer la pression sur l'endpoint HTTP d'auto-configuration (.well-known/openid-configuration) du serveur Ory Hydra. Cela peut être réalisé en stockant le fournisseur OIDC dans un cache pour une période déterminée, de sorte que les requêtes répétées à la même URL d'émetteur n'entraînent pas la création de nouveaux fournisseurs OIDC à chaque fois.

Détails d'implémentation

Pour mettre en œuvre ce changement, les étapes suivantes peuvent être suivies :

  1. Création d'un cache : Un cache peut être créé pour stocker les fournisseurs OIDC. Ce cache peut être basé sur une carte (map) où la clé est l'URL de l'émetteur et la valeur est le fournisseur OIDC correspondant.
  2. Modification de la méthode getClient() : Avant de créer un nouveau fournisseur OIDC, la méthode getClient() doit vérifier si un fournisseur pour l'URL d'émetteur donnée est déjà présent dans le cache. Si c'est le cas, elle retourne le fournisseur en cache. Sinon, elle crée un nouveau fournisseur, le stocke dans le cache et le retourne.
  3. Gestion de la durée de vie du cache : Pour éviter que les fournisseurs OIDC ne restent en cache indéfiniment, une durée de vie peut être définie pour chaque entrée du cache. Une fois cette durée écoulée, le fournisseur est supprimé du cache, ce qui permet de mettre à jour les informations de configuration si nécessaire.
  4. Gestion des erreurs : Il est important de gérer correctement les erreurs qui pourraient survenir lors de la création d'un fournisseur OIDC ou lors de l'accès au cache. Les erreurs doivent être propagées et gérées de manière appropriée pour assurer la stabilité du système.

Tests d'acceptation

Les tests d'acceptation pour cette fonctionnalité devraient inclure les scénarios suivants :

  1. Accès à un fournisseur OIDC avec mise en cache : Vérifier que le fournisseur OIDC est correctement mis en cache et réutilisé lors de requêtes ultérieures à la même URL d'émetteur.
  2. Mise à jour du fournisseur OIDC après expiration de la durée de vie du cache : Vérifier que le fournisseur OIDC est correctement mis à jour après l'expiration de la durée de vie du cache.
  3. Gestion des erreurs : Vérifier que les erreurs sont correctement gérées et propagées lors de la création d'un fournisseur OIDC ou lors de l'accès au cache.
  4. Performances : Vérifier que la mise en cache du fournisseur OIDC améliore les performances en réduisant le nombre de requêtes à l'endpoint d'auto-configuration du serveur Ory Hydra.
## Description Il est nécessaire de mettre en cache le `oidc.Provider` dans la méthode `getClient()` de `internal/proxy/director/layer/authn/oidc/authenticator.go` afin de diminuer la pression sur l'endpoint HTTP d'auto-configuration (`.well-known/openid-configuration`) du serveur Ory Hydra. Cela peut être réalisé en stockant le fournisseur OIDC dans un cache pour une période déterminée, de sorte que les requêtes répétées à la même URL d'émetteur n'entraînent pas la création de nouveaux fournisseurs OIDC à chaque fois. ## Détails d'implémentation Pour mettre en œuvre ce changement, les étapes suivantes peuvent être suivies : 1. **Création d'un cache** : Un cache peut être créé pour stocker les fournisseurs OIDC. Ce cache peut être basé sur une carte (`map`) où la clé est l'URL de l'émetteur et la valeur est le fournisseur OIDC correspondant. 2. **Modification de la méthode `getClient()`** : Avant de créer un nouveau fournisseur OIDC, la méthode `getClient()` doit vérifier si un fournisseur pour l'URL d'émetteur donnée est déjà présent dans le cache. Si c'est le cas, elle retourne le fournisseur en cache. Sinon, elle crée un nouveau fournisseur, le stocke dans le cache et le retourne. 3. **Gestion de la durée de vie du cache** : Pour éviter que les fournisseurs OIDC ne restent en cache indéfiniment, une durée de vie peut être définie pour chaque entrée du cache. Une fois cette durée écoulée, le fournisseur est supprimé du cache, ce qui permet de mettre à jour les informations de configuration si nécessaire. 4. **Gestion des erreurs** : Il est important de gérer correctement les erreurs qui pourraient survenir lors de la création d'un fournisseur OIDC ou lors de l'accès au cache. Les erreurs doivent être propagées et gérées de manière appropriée pour assurer la stabilité du système. ## Tests d'acceptation Les tests d'acceptation pour cette fonctionnalité devraient inclure les scénarios suivants : 1. **Accès à un fournisseur OIDC avec mise en cache** : Vérifier que le fournisseur OIDC est correctement mis en cache et réutilisé lors de requêtes ultérieures à la même URL d'émetteur. 2. **Mise à jour du fournisseur OIDC après expiration de la durée de vie du cache** : Vérifier que le fournisseur OIDC est correctement mis à jour après l'expiration de la durée de vie du cache. 3. **Gestion des erreurs** : Vérifier que les erreurs sont correctement gérées et propagées lors de la création d'un fournisseur OIDC ou lors de l'accès au cache. 4. **Performances** : Vérifier que la mise en cache du fournisseur OIDC améliore les performances en réduisant le nombre de requêtes à l'endpoint d'auto-configuration du serveur Ory Hydra.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Cadoles/bouncer#47
No description provided.