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 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 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 utilisateur de la 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 doivent souvent vérifier les signatures JWT et que de nombreux anciens outils ne prennent pas en charge l'algorithme EC (ne prenant en charge 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.
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és publique et 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 l'algorithme EC (Elliptic Curve) par défaut. 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 à Logto Experience API 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 utilisateur de la 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.
-
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.
-
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.
-
Et 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.
Statut Description Actuel Cela indique que cette clé est actuellement utilisée dans vos applications et APIs. Précédent Cela fait référence à une clé qui était précédemment utilisée 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 :
- Créer une nouvelle clé de signature : Cela nécessitera que toutes vos applications et APIs adoptent la nouvelle clé de signature.
- 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.
- Supprimer votre clé précédente : Les clés étiquetées comme "précédentes" seront révoquées et supprimées du tableau.
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.