Depuis l'essor des architectures microservices, l'auth a bien évolué. Les solutions basées sur un serveur d'authorisation central sont certes simples à mettre en place, mais rendent les systèmes moins résilients. Si le serveur d'auth tombe, l'ensemble de la plateforme tombe. De l'autre côté du spectre, des systèmes à base de jetons au porteur (comme JWT) permettent de s'affranchir des contraintes d'un système centralisé. En revanche, de tels systèmes sont notoirement complexes à mettre en place et nécessitent une bonne dose d'expérience pour éviter les erreurs.
Dans cette conférence je vous présenterai :
- comment choisir entre un système d'auth centralisé et un système distribué
- un tour d'horizon des solutions possibles pour les jetons au porteur;
- les différentes architectures d'auth possibles (passerelle d'auth, intégration directe, …);
- les éléments indispensables à mettre en place dans un tel système (rafraîchissement des tokens, révocation, rotation des clés, …);
- la plateforme biscuit, construite autours de ces use cases.
Et si vous êtes sages on pourra prendre le temps d'écrire des règles d'accès avec datalog, un langage logique inspiré de prolog.
L'écriture de parsers est un exercice intéressant, mais dangereux: on ne compte plus les erreurs d'implémentations, vulnérabilités et crashes en production causés par des parsers. En utilisant la méthode des parser combinators et la gestion mémoire de Rust, on évitera tous ces écueils.