Aller au contenu principal

Clés de signature

Les clés de signature OIDC de Logto, également connues sous le nom de "clés privées OIDC" et "clés de cookie OIDC", sont les clés de signature utilisées pour signer les jetons JWT (jetons d’accès et jetons d’identifiant) et les cookies de navigateur dans les sessions de connexion de Logto. Ces clés de signature sont générées lors de l'initialisation de la base de données Logto (open-source) ou lors de la création d'un nouveau locataire (Cloud) et peuvent être gérées via le CLI (open-source), les Management APIs ou l'interface Console.

Par défaut, Logto utilise l'algorithme de courbe elliptique (EC) pour générer des signatures numériques. Cependant, étant donné que les utilisateurs ont souvent besoin de vérifier les signatures JWT et que de nombreux anciens outils ne prennent pas en charge l'algorithme EC (ne supportant que RSA), nous avons implémenté la fonctionnalité de rotation des clés privées et permettons aux utilisateurs de choisir l'algorithme de signature (y compris RSA et EC). Cela garantit la compatibilité avec les services utilisant des outils de vérification de signature obsolètes.

remarque

Théoriquement, les clés de signature ne devraient pas être divulguées et n'ont pas de date d'expiration, ce qui signifie qu'il n'est pas nécessaire de les faire tourner. Cependant, faire tourner périodiquement la clé de signature après une certaine période peut renforcer la sécurité.

Comment ça fonctionne ?

  • Clé privée OIDC
    Lors de l'initialisation d'une instance Logto, une paire de clé publique et clé privée est automatiquement générée et enregistrée dans le fournisseur OIDC sous-jacent. Ainsi, lorsque Logto émet un nouveau jeton JWT (jeton d’accès ou jeton d’identifiant), le jeton est signé avec la clé privée. En même temps, toute application cliente qui reçoit un jeton JWT peut utiliser la clé publique associée pour vérifier la signature du jeton, afin de s'assurer que le jeton n'est pas altéré par un tiers. La clé privée est protégée sur le serveur Logto. La clé publique, cependant, comme son nom l'indique, est publique pour tout le monde et peut être accédée via l'interface /oidc/jwks du point de terminaison OIDC. Un algorithme de clé de signature peut être spécifié lors de la génération de la clé privée, et Logto utilise par défaut l'algorithme EC (courbe elliptique). Les utilisateurs administrateurs peuvent changer l'algorithme par défaut en RSA (Rivest-Shamir-Adleman) en faisant tourner les clés privées.
  • Clé de cookie OIDC
    Lorsqu'un utilisateur initie un flux de connexion ou d'inscription, une "session OIDC" sera créée sur le serveur, ainsi qu'un ensemble de cookies de navigateur. Avec ces cookies, le navigateur peut demander à l'Experience API de Logto d'effectuer une série d'interactions au nom de l'utilisateur, telles que la connexion, l'inscription et la réinitialisation du mot de passe. Cependant, contrairement aux jetons JWT, les cookies sont uniquement signés et vérifiés par le service OIDC de Logto lui-même, des mesures de cryptographie asymétrique ne sont pas requises. Ainsi, nous n'avons pas de clés publiques associées pour les clés de signature de cookies, ni d'algorithmes de cryptage asymétrique.

Faire tourner les clés de signature depuis l'interface Console

Logto introduit une fonctionnalité de "Rotation des clés de signature", qui vous permet de créer une nouvelle clé privée OIDC et une clé de cookie dans votre locataire.

  1. Accédez à Console > Clés de signature. De là, vous pouvez gérer à la fois les clés privées OIDC et les clés de cookie OIDC.

  2. Pour faire tourner la clé de signature, cliquez sur le bouton "Faire tourner les clés privées" ou "Faire tourner les clés de cookie". Lors de la rotation des clés privées, vous avez la possibilité de changer l'algorithme de signature.

  3. Vous trouverez un tableau qui répertorie toutes les clés de signature en cours d'utilisation. Remarque : Vous pouvez supprimer la clé précédente, mais vous ne pouvez pas supprimer la clé actuelle.

    StatutDescription
    ActuelleCela indique que cette clé est actuellement utilisée dans vos applications et APIs.
    PrécédenteCela fait référence à une clé qui était utilisée auparavant mais qui a été remplacée. Les jetons existants avec cette clé de signature restent valides.

Veuillez vous rappeler que la rotation implique les trois actions suivantes :

  1. Créer une nouvelle clé de signature : Cela nécessitera que toutes vos applications et APIs adoptent la nouvelle clé de signature.
  2. Faire tourner la clé actuelle : La clé existante sera désignée comme "précédente" après la rotation et ne sera pas utilisée par les nouvelles applications et APIs créées. Cependant, les jetons signés avec cette clé resteront valides.
  3. Supprimer votre clé précédente : Les clés étiquetées comme "précédentes" seront révoquées et supprimées du tableau.
attention

Ne faites jamais tourner les clés de signature consécutivement (deux fois ou plus), car cela pourrait invalider TOUS les jetons émis.

  • Pour les utilisateurs OSS, après avoir fait tourner la clé de signature, un redémarrage de l'instance Logto est nécessaire pour que la nouvelle clé de signature prenne effet.
  • Pour les utilisateurs Cloud, la nouvelle clé de signature prend effet immédiatement après la rotation, mais assurez-vous de ne pas faire tourner la clé de signature plusieurs fois consécutivement.