Les deux choix font référence à l'algorithme utilisé par le fournisseur d'identité pour signe le JWT. La signature est une opération cryptographique qui génère une "signature" (partie du JWT) que le destinataire du jeton peut valider pour s'assurer que le jeton n'a pas été falsifié.
-
RS256 (Signature RSA avec SHA-256 ) est un algorithme asymétrique Le fournisseur d'identité possède une clé privée (secrète) utilisée pour générer la signature, et le consommateur du JWT reçoit une clé publique pour valider la signature. Étant donné que la clé publique, contrairement à la clé privée, n'a pas besoin d'être conservée de manière sécurisée, la plupart des fournisseurs d'identité la mettent à la disposition des consommateurs pour qu'ils puissent l'obtenir et l'utiliser (généralement via une URL de métadonnées).
-
HS256 ( HMAC avec SHA-256), en revanche, implique la combinaison d'une fonction de hachage et d'une clé (secrète) partagée entre les deux parties, utilisée pour générer le hachage qui servira de signature. Comme la même clé est utilisée à la fois pour générer la signature et pour la valider, il faut veiller à ce que la clé ne soit pas compromise.
Si vous développez l'application qui utilise les JWT, vous pouvez utiliser HS256 en toute sécurité, car vous aurez le contrôle sur les personnes qui utilisent les clés secrètes. Si, en revanche, vous ne contrôlez pas le client, ou si vous n'avez aucun moyen de sécuriser une clé secrète, RS256 sera plus adapté, puisque le consommateur n'a besoin de connaître que la clé publique (partagée).
Comme la clé publique est généralement disponible à partir des points de terminaison des métadonnées, les clients peuvent être programmés pour récupérer la clé publique automatiquement. Si c'est le cas (comme c'est le cas avec les bibliothèques .Net Core), vous aurez moins de travail à faire pour la configuration (les bibliothèques iront chercher la clé publique sur le serveur). Les clés symétriques, en revanche, doivent être échangées hors bande (en assurant un canal de communication sécurisé) et mises à jour manuellement en cas de renouvellement de la clé de signature.
Auth0 fournit des points d'accès aux métadonnées pour les protocoles OIDC, SAML et WS-Fed, où les clés publiques peuvent être récupérées. Vous pouvez voir ces points de terminaison dans les "Paramètres avancés" d'un client.
Le point de terminaison des métadonnées de l'OIDC, par exemple, prend la forme suivante https://{account domain}/.well-known/openid-configuration
. Si vous naviguez vers cette URL, vous verrez un objet JSON avec une référence à https://{account domain}/.well-known/jwks.json
qui contient la (ou les) clé(s) publique(s) du compte, représentée(s) sous la forme d'un fichier de type Jeu de clés Web JSON .
Si vous regardez les échantillons RS256, vous verrez que vous n'avez pas besoin de configurer la clé publique où que ce soit : elle est récupérée automatiquement par le framework.
1 votes
Voir aussi les réponses sur l'échange de piles de sécurité Algorithmes recommandés pour JWT