OpenID Connect Core impose aux fournisseurs de prendre en charge RS256 pour les jetons d’ID : c’est pourquoi Google, Microsoft Entra ID, Okta et Auth0 l’utilisent par défaut pour signer. Les clés doivent faire au moins 2048 bits (RFC 7518 §3.3) ; la JWK comporte kty RSA, n et e. Les signatures sont déterministes : la même clé et la même entrée donnent toujours le même résultat.
La vérification est peu coûteuse (environ 114 000 par seconde pour des clés de 2048 bits sur un cœur d’Apple M4 Max avec OpenSSL 3.6.5) et la signature est lente (environ 3000 par seconde), ce qui convient aux émetteurs, qui signent bien moins souvent que les parties de confiance ne vérifient. Le prix à payer est la taille : une signature de 2048 bits fait 342 caractères base64url, une signature de 3072 bits en fait 512.
Le piège classique est la confusion d’algorithme : un vérificateur qui accepte aussi HS256 avec le même objet clé peut être amené à utiliser la clé publique RSA comme secret HMAC. Fixez RS256 pour chaque clé. PS256 utilise les mêmes clés avec le remplissage PSS, plus robuste.