Les spécifications OpenID Connect publiées comme normes ISO
(self-issued.info)- Neuf spécifications OpenID Connect ont été publiées comme normes ISO/IEC, faisant entrer dans le cadre des normes internationales Core 1.0, Discovery, Dynamic Client Registration, les spécifications de déconnexion ainsi que les modes de réponse OAuth 2.0
- L’OpenID Foundation les avait soumises à l’ISO en décembre 2023 via la procédure PAS (Publicly Available Specifications), puis leur publication a été finalisée après un vote d’approbation de l’ISO
- La normalisation ISO pourrait faciliter le déploiement d’OpenID Connect dans les juridictions qui exigent les spécifications d’organismes de normalisation reconnus par des traités internationaux
- Avant la soumission, l’OpenID Connect working group a mené une procédure d’application des errata corrections afin que les corrections connues soient intégrées aux versions ISO
- Forte de cette expérience de la procédure PAS, l’OpenID Foundation prévoit de soumettre à la publication ISO FAPI 1.0, puis les familles de spécifications eKYC-IDA et FAPI 2.0 après leur finalisation
Spécifications publiées comme normes ISO/IEC
- Les spécifications liées à OpenID Connect publiées cette fois comme normes ISO/IEC sont au nombre de neuf
- ISO/IEC 26131:2024 — Information technology — OpenID connect — OpenID connect core 1.0 incorporating errata set 2
- ISO/IEC 26132:2024 — Information technology — OpenID connect — OpenID connect discovery 1.0 incorporating errata set 2
- ISO/IEC 26133:2024 — Information technology — OpenID connect — OpenID connect dynamic client registration 1.0 incorporating errata set 2
- ISO/IEC 26134:2024 — Information technology — OpenID connect — OpenID connect RP-initiated logout 1.0
- ISO/IEC 26135:2024 — Information technology — OpenID connect — OpenID connect session management 1.0
- ISO/IEC 26136:2024 — Information technology — OpenID connect — OpenID connect front-channel logout 1.0
- ISO/IEC 26137:2024 — Information technology — OpenID connect — OpenID connect back-channel logout 1.0 incorporating errata set 1
- ISO/IEC 26138:2024 — Information technology — OpenID connect — OAuth 2.0 multiple response type encoding practices
- ISO/IEC 26139:2024 — Information technology — OpenID connect — OAuth 2.0 form post response mode
Soumission PAS et approbation ISO
- La soumission des spécifications OpenID Connect pour l’OpenID Foundation a été effectuée en décembre 2023 sous la forme PAS (Publicly Available Specifications)
- Après le vote d’approbation de l’ISO, ces spécifications ont été publiées comme normes ISO/IEC
- L’ISO étant l’un des organismes de normalisation reconnus par des traités internationaux, cela pourrait accroître les possibilités d’adoption d’OpenID Connect dans les juridictions où l’usage de normes issues de tels organismes est légalement requis
Corrections intégrées aux versions ISO
- Avant la soumission, l’OpenID Connect working group a mené une procédure d’application des errata corrections aux spécifications
- Les versions ISO intègrent ainsi les corrections connues
Prochaines soumissions ISO prévues
- Après avoir mené une première fois la procédure de soumission ISO PAS, l’OpenID Foundation prévoit de soumettre d’autres familles de spécifications finales à la publication ISO
- Les prochaines cibles incluent la spécification FAPI 1.0
- Les spécifications eKYC-IDA et FAPI 2.0 sont prévues pour soumission après leur finalisation
1 commentaires
Commentaires sur Hacker News
Bien que j’aie été assez impliqué dans OpenID il y a environ 17 ans (https://simonwillison.net/search/?tag=openid&year=2007), il m’a fallu un temps embarrassant pour comprendre que OpenID Connect n’a presque rien à voir avec l’idée originelle d’OpenID selon laquelle « l’identifiant est une URL et l’on prouve la propriété de cette URL »
OpenID Connect est en pratique bien plus proche d’une évolution d’OAuth
Je vois OIDC moins comme une évolution d’OAuth que, dans sa vision et son esprit, comme une évolution d’OpenID. Comme OpenID, OIDC se concentre sur l’identification et l’authentification de l’utilisateur, mais contrairement à OpenID, il n’a pas recréé de toutes pièces un nouveau flux d’authentification ; il a atteint son objectif principal en ajoutant un flux d’authentification au-dessus de la spécification OAuth, déjà détournée de son usage initial à des fins d’authentification
C’est pourquoi même des systèmes dont l’objectif n’est pas la conformité OIDC suivent souvent OIDC en partie. Si une partie du standard OIDC fournit déjà ce dont on a besoin, il n’y a aucune raison de réinventer la roue
OpenID Connect est une extension qui ajoute une couche d’authentification à OAuth2 (RFC 6749), et OAuth2 est un framework d’autorisation qui accorde des permissions
En revanche, OAuth 1.0/1.0a et OpenID 1/2 ne sont que vaguement similaires par le nom ; ce sont des protocoles sans lien et incompatibles, donc en 2024 ils sont pour la plupart hors sujet. Il faut faire attention quand on cherche des informations
Ce n’est une bonne nouvelle sur aucun plan. D’abord, les standards payants qu’il faut acheter pour pouvoir lire sont vraiment une mauvaise chose
Ensuite, j’aimerais qu’on fasse plus d’efforts pour concevoir des standards et des implémentations qui ne deviennent pas un gouffre de temps sans fin quand on en a besoin
En revanche, je ne vois pas très bien quel avantage il y a à obtenir un numéro de standard ISO plutôt que de publier un document HTML sur Internet
Les standards, c’est bien, mais c’est agaçant que de grandes organisations de normalisation comme l’ISO fassent payer l’accès aux standards
J’imagine que dans certaines entreprises ou certains secteurs, on exige des « vrais » standards émanant de telles organisations plutôt que quelque chose produit par l’IETF ou par une bande de hippies de l’open source
Donc si OpenID Connect est publié avec un numéro ISO, son adoption deviendra plus facile dans certains projets. Bien sûr, OpenID Connect lui-même restera librement consultable et utilisable, mais cela offrira une option plus simple à ceux qui se trouvent dans ce genre de situation
L’ISO est une saloperie non libre et n’aide pas l’écosystème logiciel
Regardez ISO 8601 : c’est excessivement complexe, il est souvent mal implémenté parce que les mainteneurs se sont appuyés sur des brouillons gratuits, et en pratique ça ne résout même pas correctement certains problèmes. Par exemple, il ne permet pas de représenter une heure murale, ce qui pose des problèmes pour les dates futures où le fuseau horaire peut changer
J’ai aussi déjà travaillé avec le mp4, et j’ai découvert qu’il y avait des modifications propres à la stack Apple, donc l’ISO seule ne suffisait pas
La critique dérive généralement vers des hypothèses du type changement d’heure d’été. On entend souvent des remarques du genre : « je veux pouvoir désigner l’heure locale 14:00 en Absurdistan dans quatre ans, quelle que soit sa relation à l’UTC, mais je ne peux pas ». Mais si on pousse un peu plus loin ce genre d’hypothèse, l’Absurdistan pourrait aussi annexer des territoires d’outre-mer, rejoindre une alliance, ou modifier son fuseau horaire et son heure d’été
Si l’on réfléchit au problème, la définition même de l’heure locale peut changer ; il est donc impossible de spécifier une heure locale future à moins de définir exhaustivement tous les changements possibles. Au final, il faut soit fixer un futur nombre de ticks d’horloge atomique (TAI) et l’interpréter en heure locale au moment de l’utilisation, soit fixer une heure absolue puis l’interpréter en heure locale à ce moment-là
Je me demande aussi si la nouvelle API JS Temporal gère cela. Ça avait l’air d’aller assez loin
Les standards payants à la lecture comme ceux de l’ISO entravent activement le progrès de l’humanité. J’aimerais qu’on n’encourage pas ce genre de pratique
Si j’ai bien compris, le brouillon final et le standard officiel sont quasiment identiques sur le fond. Il doit probablement exister quelque part des brouillons du standard OIDC
Dire que ces ingénieurs font progresser l’humanité tout en nuisant activement au progrès de l’humanité, c’est étrange
La provisionnement d’identité est un monstre qui n’aurait jamais dû être inventé
Vers le milieu des années 2000, j’étais suffisamment fan pour faire tourner mon propre serveur OpenID, mais je n’avais pas réalisé à quel point tout ce concept est fondamentalement bancal
L’identité est une propriété inhérente à une personne, inaliénable, et non quelque chose qu’une autre personne, une entreprise/un site web, un gouvernement, etc. peut « fournir ». Ils peuvent seulement fournir des justificatifs pour la prouver, comme lorsqu’on délivre un passeport
Au moins, WebAuthn a correctement traité cet aspect
Certaines identités sont utilisées à suffisamment d’endroits pour qu’il soit difficile, vis-à-vis de certains acteurs, de nier qu’elles sont à moi, mais même dans ce cas, seuls quelques-uns de ceux qui ont vu cette identité sont en mesure de prouver qu’il s’agit bien de moi
Existe-t-il encore des émetteurs OIDC indépendants en dehors de Google, MS et Apple, qui permettent de créer un compte ?
Il n’y a pas longtemps, je voulais créer un compte Tailscale sans utiliser de compte GitHub, mais ce n’était pas possible
Il me semble qu’autrefois openid.net et Ubuntu One proposaient ce type de service, mais à ma connaissance ils ont arrêté
Cela dit, les coûts de sécurité et de support nécessaires pour ce genre de service sont élevés, et surtout lorsqu’il est proposé gratuitement, ce n’est guère réaliste pour de petites organisations. Les économies d’échelle qui rendent cela possible sont importantes, et cela fonctionne particulièrement bien quand de grandes entreprises paient pour des produits destinés au marché entreprise
OpenID Connect est un protocole assez simple. J’ai pu lire la spécification (https://openid.net/specs/openid-connect-core-1_0.html) et en comprendre l’essentiel en une journée environ
Pour ceux qui ne veulent pas lire la spécification, j’ai aussi rédigé un tutoriel complet pour implémenter un client OpenID avec de simples requêtes HTTP (https://spapas.github.io/2023/11/29/openid-connect-tutorial/)
Les exemples utilisent Python, mais cela ne devrait pas être difficile à implémenter dans le langage de votre choix. La majeure partie de la complexité consiste à décoder et vérifier les jetons JWT
J’utilise ce client écrit à la main en production depuis environ un an pour l’authentification Keycloak, et tout fonctionne parfaitement
P.-S. : je sais qu’il y a trop de publicités sur mon site. Malheureusement, je n’ai pas eu le temps de configurer correctement Google Ads et je n’ai pas trouvé de meilleure alternative. Vous pouvez utiliser un bloqueur de pub pour le lire
Cela dit, il vaut mieux faire attention aux formulations subjectives comme simple. Si le lecteur trouve cela difficile alors que l’auteur dit que c’est simple, cela peut être assez décourageant
Cela dit, je ne suis toujours pas convaincu que l’OIDC soit facile. Keycloak masque une énorme complexité, et les développeurs ne l’ont pas fait par ennui. Il y a par exemple énormément de paramètres de délai d’expiration différents : délai SSO, délai client, plusieurs délais pour les jetons, etc.
La monétisation et le fonctionnement organisationnel autour des normes ISO donnent globalement une impression très douteuse
Petite astuce peu connue : on peut trouver des versions moins chères des normes sur le sympathique site estonien https://evs.ee. Ils créent souvent leurs propres versions, dont le contenu est quasiment identique à l’original. Malheureusement, dans ce cas précis, ils semblent seulement proposer la véritable norme à un prix similaire https://www.evs.ee/en/search?OnlySuggestedProducts=false&que...
Cela vaut la peine de garder un œil sur le site pour voir si une meilleure version maison apparaît plus tard. En général, le prix tourne autour de 10 % de celui de l’original. C’est un point de donnée supplémentaire montrant que l’Estonie fait des choses formidables
Comme je travaille sur la conformité réglementaire des dispositifs médicaux, je traite souvent avec des organismes de normalisation assez louches https://openregulatory.com/accessing-standards/
J’ai entendu tous les arguments habituels du genre « la normalisation coûte de l’argent » ou « ces organismes font du bon travail », mais je ne suis absolument pas d’accord. Si quelque chose est une norme, cela devient proche de la loi à mes yeux. Les gens doivent pouvoir s’y conformer, et pour cela il faut qu’elle soit librement accessible. L’avocat général de l’UE semble être du même avis https://openregulatory.com/maybe-eu-standards-are-becoming-f...
Il existe de nombreuses normalisations qui n’ont pas besoin de vendre des PDF à prix douteux. ECMAScript et ANSI C me viennent à l’esprit, et la liste continue
En faire une publication ISO devient, du point de vue des services achats, un bouclier de défausse de responsabilité
Après tout, personne ne s’est jamais fait licencier pour avoir exigé la conformité à tout un lot de normes ISO