 Alors bonjour à toutes et tous, je m'appelle Valéria de Venance, je suis développeur évangéliste chez Twilio, et aujourd'hui je vais vous raconter une petite histoire de l'autre. Alors de quel autre on parle, ça on va commencer du coup, une petite histoire par définir qu'est-ce que l'authentification et qu'est-ce que l'autorisation. Ensuite on va vraiment passer dans le mode histoire pour voir comment s'arriver, qu'est-ce qui s'est passé, pourquoi et comment on en est là où on en est aujourd'hui. Et ensuite je vous ferai un petit livecode d'un petit outil très simple pour ajouter encore une petite surcouche de sécurité à votre app. Alors commençons donc par démystifier la différence entre l'authentification et l'autorisation. L'authentification quand on l'a pas, on se prend ce petit code HTTP, le 401 unauthorized. Alors souvent pour s'authentifier on va s'authentifier avec un couple non-dutilisateur mode pass. Ce non-dutilisateur, ça va être soit par exemple un email, un numéro de téléphone, un non-dutilisateur que nous allons choisir arbitrairement selon sa disponibilité, ou alors un identifiant qui va nous être assigné par le site web auquel on cherche pas s'identifier. Ça c'est l'authentification avec quelque chose que l'on connaît. C'est à dire que c'est toujours de la data que l'on a et notre mode pass sera un secret qui d'aliment on ne partage pas. Ça c'est un pass touristique, physique et moi en tant que détentrice de ce pass. Si je vais à Singapour je vais pouvoir accéder à toutes les attractions qui vont accepter ce pass comme moyen de s'authentifier en fait comme utilisateur qui a le droit d'utiliser le service à savoir l'attraction touristique. Ça c'est l'identification avec quelque chose que l'on possède. Depuis qu'on utilise de plus en plus les téléphones portables, on va de plus en plus s'identifier notamment avec des QR codes que l'on va recevoir par exemple. Les cinémas ont réouvert il n'y a pas très longtemps et du coup j'étais super super super contente. Je me suis repris tout de suite une carte et en fait j'ai bien la carte en physique mais en réalité je n'utilise jamais, elle est passée dans mon téléphone et maintenant je présente mon QR code pour retirer mes billets et pouvoir accéder à la salle de cinéma. Donc ça c'est bien l'identification avec quelque chose que je possède. Ça vous savez peut-être pas ce que c'est mais c'est mon tout premier ordinateur, un HP Pavilion DV7. Et la particularité de cet ordinateur c'est qu'il avait du coup ce que vous voyez en bas à droite à savoir un lecteur d'empreinte digitale et ce lecteur d'empreinte digitale de fait il était utilisé un peu comme master password partout du coup je me connectais à Facebook, Twitter et tout ça juste en scanant mon voie. C'est ça, c'est l'identification avec quelque chose que je suis. Et ça fonctionne oui mais parfois on peut un peu le triquer. Je ne sais pas si vous vous rappelez de cet épisode de Cache Investigation, il est un peu ancien maintenant où en fait Elise Lucet et ses collaborateurs avaient volé l'empreinte digitale d'une autre personne du coup qui travaillait dans le studio récupérer du coup sur un verre et puis ensuite il l'avait imprimé utilisé du papier transparent et de la collaboration et puis avait créé un moule d'empreinte en fait et ils avaient réussi à déjouer le système paraf donc le système de contrôle au frontière notamment utilisé beaucoup dans les aéroports et ils avaient réussi à déjouer ce système-là avec tout simplement du papier transparent et d'imprimante et de la collaboration et c'est tout. Je vais vous montrer également très rapidement cette petite vidéo qui est une vidéo du Chaos Computer Club, on peut la mettre en vitesse 2 qui explique en fait comment ils ont réussi à déjouer la sécurité du Galaxy S8 tout simplement en prenant une photo en mode infrarouge d'une personne du coup comme on pourrait faire dans un parc tout simplement. Ensuite ils impriment du coup cette vidéo infrarouge de l'iris de la personne ils enregistrent du coup l'iris d'un téléphone ça permet de débloquer le téléphone simplement à l'aide de l'iris et donc ils te récupèrent ce qu'ils ont imprimé ils placent tout simplement une encie de contact pour l'effet 3D et ça fonctionne un peu flippant n'est-ce pas ? donc ça c'est la biométrie comme je vous disais et donc c'est avec quelque chose que l'on est moi personnellement j'aime pas trop parce que autant un mode passe me faire voler mes codes de carte de crédit pourquoi pas c'est que de l'argent maintenant me faire voler mes iris, mes empreintes digitales les premiers j'en ai que deux, les secondes je n'en ai que 10 et je ne peux pas les changer en général l'authentification simple fonctionne très bien sauf dans les cas des attaques ciblées c'est à dire que si un attaquant va venir pour vous cibler vous directement et pour du coup voler votre identité ou voler vos accès souvent ce qu'il va se passer c'est qu'ils vont utiliser différents types d'attaques là sur la photo, enfin sur l'illustration en représentant le piecing et ce qui se passe c'est que très souvent on a des systèmes de sécurité annexe puisqu'on sait qu'on a tendance à oublier les mots de passe et on va du coup utiliser ce qu'on appelle des petits moyens de s'en souvenir ou alors des petites phrases de sécurité qui vont nous redonner l'accès au compte sauf que ces phrases de sécurité bien souvent ça va être des choses que l'on sait et que d'autres personnes peuvent aussi savoir par exemple ça va être le nom de votre premier animal de compagnie bon et bien peut-être que vous l'avez mis sur Facebook il y a quelques années peut-être que ça va être le nom de famille de votre père ou le nom de jeune fille de votre mère, pareil c'est des infos si on fait pas attention elles traînent en fait à certains endroits et ça va tout simplement créer des vulnérabilités en fait de laisser ces informations là sur le web c'est pourquoi aujourd'hui on voit apparaître de plus en plus de la two factor authentication et de la multi factor authentication pour faire de la two factor authentication il suffit tout simplement de mélanger les différents types d'authentification que l'on a vu auparavant donc à savoir par exemple on va utiliser quelque chose que l'on connaît donc le couple identifier mode passe et à ça on va ajouter par exemple un numéro de téléphone donc là on va par exemple recevoir un code par téléphone que l'on va devoir rentrer en plus et l'authentification à factor multiple de fait ça va être de combiner plusieurs de ces éléments ou alors d'utiliser plusieurs fois ces mêmes éléments l'autorisation quand on n'a pas on se fait engueuler avec le code HTTP 403 forbidden, interdit mais pourquoi ? alors, pardon, ça doit pas être là ça donc interdit et ça veut dire que parce que l'autorisation en fait c'est juste le droit d'avoir c'est le droit d'avoir le droit de faire quelque chose donc ici sur cette image hyper simple un enfant qu'on pourrait aussi représenter par un utilisateur à l'autorisation de ses parents donc le serveur de faire une action à savoir prendre une ressource dans le cas présent des fraises ces autorisations sont toujours très très souvent liées aux actions du crud donc qui sont les actions de base que l'on peut faire en HTTP à savoir créer des fichiers des choses comme ça, les lire, les mettre à jour et les supprimer par exemple on pourrait imaginer une équipe de travail ou par exemple le lead aurait absolument tous les droits alors que par exemple les personnes de sa responsabilité auraient uniquement le droit de lecture et de modification par exemple et de fait on a tendance à résumer ça un peu rapidement en disant que l'autorisation c'est le fait de vérifier la liste des droits d'un utilisateur qui se serait authentifié auprès d'un service sauf que non vous pouvez scanner ce QR code ou visiter site web je l'ai fait hier et je me suis pris ce petit message d'erreur alors que je n'étais absolument pas authentifiée je ne sais pas ce que fait ce site mais tout simplement puisque je suis dans le milieu européen et qu'ils ont décidé de ne pas gérer la gdpr la rgpd en français en fait tout simplement je suis bloquée de par mon IP européenne et donc je ne suis pas autorisée à lire les ressources disponibles sur le serveur ok on a à peu près fait le tour de ce que c'est l'authentification et l'autorisation et je vous propose maintenant de commencer la petite histoire et cette petite histoire elle a commencé avec Kierberos Kierberos est née au MIT lors d'un projet qu'on appelle le projet Athena le projet Athena il va regrouper très rapidement donc le MIT, IBM et Digital Equipment Corporation qui aujourd'hui s'appelle HP ils sont changés de nom pas mal de temps entre fois et à quoi il servait ce projet Athena ce projet Athena servait à partager des idées du code partager des cours au niveau du campus et le tout devait pouvoir être fait depuis différents types de systèmes d'exploitation et surtout pardon donc oui ça devait être possible à partir de différents types de systèmes d'exploitation et ça n'existait pas encore du tout à l'époque aujourd'hui on appellerait ça simplement en entraînette et on s'en servirait super simplement et on ne se poserait même pas la question et en fait on ne se pose plus la question aujourd'hui puisque en 83 du coup les acteurs que je vous ai cités avant ce sont réunis ensemble et on lançait du coup le projet Athena la R&D totale du projet a duré 8 ans les 3 premières versions sont sorties uniquement en interne et il y a une multitude de choses qui ont servi très largement au-delà de ce projet là qui m'était créé les plus notables ce serait X11 ou Xwindows System et le Zephyr Notification Service qui du coup avec ERC était l'une des premières qui a duré largement utilisé même par des personnes non-techniques et donc du coup c'est grâce au projet Athena qu'on a pas mal de choses aujourd'hui notamment échange de fichiers simples le fait de pouvoir jouer ensemble sur différents jeux ou ce genre de choses en n'étant pas physiquement ensemble mis sur les mêmes réseaux donc du coup dans le projet Athena parmi tous les outils qui ont été créés nous avons les Kerberos les Kerberos ça fonctionne donc c'est le système d'authentification et ça fonctionne comme ça avec un centre de distribution des clés donc le client va aller au niveau du serveur de donc le centre de distribution des clés est divisé en deux parties le serveur d'authentification et le serveur d'émission d'étiquet le client lui il va aller demander au serveur d'authentification il va faire une demande ce que vous pouvez voir c'est que à chaque fois on va connaître une clé mais pas les deux du serveur et surtout on va toujours connaître la clé du suivant dans la chaîne mais pas du précédent donc du coup on va aller au niveau du serveur d'authentification lui demander il va nous donner un petit ticket avec un secret protégé nous on va du coup récupérer ça retourner au serveur d'émission d'étiquet qui à nouveau va protéger son petit secret et à la fin on va tout simplement aller vers le serveur que l'on veut avec toute notre authentification qui est bien packaging et qui sera protégée par le dernier secret c'est pas hyper hyper simple comme mécanisme mais ça permet une fois qu'on est authentifié du coup au niveau du centre de distribution des clés d'être authentifié si bien au niveau du serveur dont on a recéé l'accès au tout début mais aussi à tous les autres serveurs qui sont accessibles via ce centre de distribution des clés c'est ce qu'on appelle le single sign on le single sign on c'est vraiment de voir s'identifier une seule fois et d'être authentifié à plusieurs endroits et c'est vraiment Kerberos qui a créé ce système qu'on connaît bien aujourd'hui et sur lequel on reviendra par la suite alors c'est pas mal ça fonctionne bien mais puisqu'il n'y a qu'un seul centre de distribution des clés pour plusieurs services ça en fait un énorme point de vulnérabilité en tant qu'attaquant si je veux par exemple empêcher la concurrence de bosser pendant un x-tan sur quelque chose un point de focus ce sera le centre de distribution des clés qui du coup va leur donner l'accès aux ressources auxquelles ils ont besoin pour travailler et ça c'est le cas où je veux dire c'est une panne d'attaque d'autant que les KDC sont d'une arable des doses mais une panne matérielle ça arrive aussi et à ce moment là pareil tout le service s'est tombé et il faut remonter tout ça ah ok ah mincement pardon et surtout le centre de distribution des clés donc il est vulnérable aux attaques des doses mais il n'est donc aussi pas capable de détecter le vol des clés secrets et il ne bloque pas non plus les bruts de force sur les mots de passe la bonne nouvelle en cas de vol de mot de passe c'est que puisque l'expiration est gérée en fait dès le départ en lui donnant une validité limite la faille sera mescrisée dans le temps à savoir que dès que le ticket volé ne sera plus valide l'attaquant aura plus accès aux ressources la suite de l'histoire on continue avec Samuel et le Samuel vient à la base d'un autre langage qui s'appelle le SGML Standard Generized Markup Language le SGML c'est un outil qui est utilisé à la base comme sécurité un outil de sécurité qui était vendu du coup par différents vendeurs tout simplement estates et ils se sont dit et si on se regrouper tous ensemble pour promouvoir ce standard de sécurité et faire en sorte que tout devienne un peu plus sécur sur le web et c'est comme ça voilà mais en fait ils se sont rendu compte aussi que pendant qu'ils faisaient du coup leur on va dire leur évangélisation autour du langage SGML qu'en fait de plus en plus de gens utilisés le XML et le XML que vous connaissez encore mieux probablement que le SGML se présente comme ça donc c'est tout simplement des clés et des valeurs et ça c'est la représentation d'une commande e-commerce en XML donc ils ont vu que pas mal de monde utilisait le XML et ils se sont dit ok on va créer un petit consortium du coup pour travailler sur sécuriser le XML et en faire du SAML qui deviendra donc Security Arts Ocean Markup Language ils ont créé la V1 du coup en 2012 publié en 2002 pardon et ça a commencé à être utilisé par pas mal de personnes dont Liberty IDFF qui est un framework de fédération d'identité et Chibolette qui est un middleware qui a été créé par internet 2 et qui a été majoritairement utilisé pour des projets de recherche et d'enseignement et ils ont tous les deux utilisé un peu de SAML de leur côté et ils sont arrivés à des versions qui leur plaisaient bien et donc ils ont été voir le consortium qui s'occupait du coup du SAML et leur ont dit ok on a fait ça qu'est ce que vous en pensez et là le consortium nos coasis a dit ah mais c'est vraiment super venez rassembler un peu tout ça et c'est ce qui a donné la version 2 de SAML le problème c'est qu'il y avait tellement de changements tellement de différences comme belle la version 2 de SAML n'est pas compatible avec la version 1 en réalité la version 1.1 parce que la version 1.0 n'étant pas safe elle est plus du tout utilisée aujourd'hui mais de fait aujourd'hui on va se retrouver sur internet avec des systèmes qui utilisent du SAML v1.1 et du SAML v2 comme ça avait tellement changé le consortium a changé de nom et est devenu Oasis il a changé en 98 et pour vous donner une idée de son importance encore aujourd'hui à l'heure actuelle on a toujours plus de 3500 membres présents dans plus de 100 pays qui travaillent à la fin à continuer à qui travaillent à je vais pas y arriver c'est pas grave mais en tout cas ils continuent leurs efforts et ça continue les spécifications et ça continue à faire évoluer évidemment le SAML l'USJML n'est pas mort pour autant et la dernière version est sortie l'an dernier et une version prochaine va sortir là je pense dans les jours qui viennent jour ou mois mais en ce cas ils sont vraiment en train de travailler dessus et ce sera bientôt prêt ensuite OpenID fut créé Allo aux States rencontré cet homme Bradfice Patrick à l'époque où il était un peu plus jeune Bradfice Patrick en fait il faisait plus de trucs super intéressants après ses cours il s'est dit mais ce serait super si j'avais un moyen de montrer à mes amis ce que je fais après quand je suis pas avec eux et c'est comme ça qu'il a créé le live journal qui est un petit site web un réseau social en réalité un des premiers qui se basait un peu sur le principe du journal intime et donc il a fait son site le live journal et il s'est dit ok c'est en train de pas mal monter et tout donc je vais créer une boîte pour protéger ça et donc c'est comme ça qu'il a créé dans le cas interactif et pour protéger du coup ce qui est d'authentification dans le live journal il a créé Yadis pour vous donner une idée de pourquoi c'était un besoin j'ai pas les chiffres exacts mais à peu près en 2012 il y avait encore 40 millions de comptes créés sur le live journal vraiment il y avait besoin de manager on va dire les identités il a créé Yadis et en fait Yadis s'est fait racheter par John Rain il a créé Yadis dans le cas de sa société Danga et Danga s'est fait racheter par John Rain et à ce moment-là Bradford Patrick a dit ok moi aussi je vais aller travailler là-bas et il a continué à bosser du coup sur Yadis en faisant partie de John Rain et John Rain du coup a dit ok on va aussi allouer plus de développeurs et de développeuses sur le projet et c'est aussi que plusieurs sociétés se sont dit ok c'est intéressant on va mettre de l'argent des ressources et aussi on va leur mettre à disposition un nombre d'omènes OpenAizi.net et c'est comme ça que l'on a eu du coup le nom que l'on connait alors comment ça se passe pour se connecter avec OpenAizi donc la première chose à faire en tant que utilisateur ou utilisatrice c'est d'aller me créer un utilisateur, là dans mon cas présent ce serait Valerian et donc ça il faut le faire auprès d'un fournisseur d'identité donc là il y avait le live journal il y avait Yahoo également qu'il faisait, MySpace également et donc l'adresse de connexion va être différente selon le fournisseur donc voilà je crée mon adresse enfin je crée mon profil on va me donner une adresse à partir de cette adresse on va me connecter sur un service qui fait l'authentification déléguée par OpenAizi je vais donc renseigner mon URI par exemple MySpace.com c'est la Valerian le service auquel je tente de m'authentifier va faire une requête a MySpace qui MySpace va me demander à moi de fournir mon mot de passe MySpace si je donne le bon MySpace va renvoyer au service qui a initié la requête mon profil utilisateur ainsi que ma liste juste mon profil utilisateur et là du coup je vais être tout simplement une utilisatrice authentifiée du site auquel j'ai demandé l'accès donc j'ai pas besoin de me recréer en compte j'ai pas besoin de retenir un mot de passe différent supplémentaire et j'ai aussi le contrôle de qui a l'accès à travers ça puisque de toute façon MySpace va m'avertir qu'il y a eu une connexion à TLC via MySpace avec mon identité pour vous donner une idée de qui a financé OpenID en gros nom on pourrait citer Microsoft Google PayPal mais aujourd'hui on l'utilise plus tant que ça la raison derrière ça c'est parce que en partie de 2013 en fait les gens se sont rendus compte que l'authentification déléguée par Google était complètement meurt complètement en train de dominer le marché et ils se sont dit ok on va aller voir du coup ce qui se passe de leur côté et c'est comme ça qu'on est passés à OpenID Connect et aux Auths 2 alors la petite histoire de ça peut tirer le tour aux states à nouveau à peu près la même époque en réalité novembre 2006 Blame Cook l'homme à gauche a dit qu'il ne peut pas d'implementer OpenID pour Twitter et il se dit ok c'est sympa on fournit des identités et tout mais est-ce que ce serait pas intéressant également de fournir à nos utilisateurs la possibilité de pouvoir donner l'autorisation au service avec lequel ils vont se connecter via Twitter de donner à ce service la possibilité par exemple de Twitter pour eux pour l'utilisateur aussi et donc il est en train de réfléchir à ça et il se dit ok je suis désolée j'espère que vous ne vous entendez pas ça ah je suis vraiment désolée donc il est en train de discuter donc il se passe toutes ces questions et puis il va voir du coup l'homme qui a inventé le hashtag chrismessina je suis désolée sans supportables bref Blame Cook va Blame Cook se réfléchit à toutes ces questions il va voir chrismessina, l'homme qui a inventé le hashtag et il se dit ok c'est parfait on appelle des copains et on va faire ça tous ensemble donc ils ont appelé des gens de chez Magnolia et puis ils ont été super wits super wits, c'est à dire que en novembre 2006 ils ont créé le groupe de travail en avril 2007 ils avaient déjà les premières drafts et en juillet 2007 la première version du protocole est sortie on aura une v2 en 2012 c'est ça qu'on utilise encore aujourd'hui à priori alors qu'est ce qu'il y a en dessous de o2 du coup on a des o2 plus openit donc on a pas mal de choses qui sont liées à o2 notamment ça c'est les assertions de des services portables ça ce sont les assertions pour les droits ça c'était vraiment le code de base et le birer en fait c'est un token qui porte ces droits également on voit également qu'il y a pas mal de choses comme la jsonweb token, la jsonweb signature la jsonweb encryption et bien d'autres qu'on va voir juste après un profil se présente comme ça c'est à dire que en tant que sub donc c'est le subscriber ça va être le nom donc là ici Alice dans mon cas ça aurait été Valerian ensuite le ISS c'est qui a issue donc qui a autorisé la connexion ensuite un hot time du coup on a le timestamp de quand est-ce que la demande d'autorisation a été créée on a l'expiration aussi directement donc on a pas besoin de gérer l'expiration à ce moment là puisque c'est fait tout seul et donc là un peu comme avec carburose à ce moment là ce qu'il faut retenir principalement c'est que donc du coup dans cette fusion open ID connect au hot 2 tout ce qui va être du coup la gestion du profil et donc de l'authentification donc vraiment l'identité ça va être la partie open ID et la partie au hot 2 c'est vraiment tout ce qui va être délégation d'autorisation donc je t'autorise à poster sur facebook pour moi je t'autorise à suivre telle personne sur twitter pour moi ce genre de choses et nous arrivons donc au json web token les json web token pareil c'est-à-dire que ça ne vient pas à la base du json le json à la base c'est bien le xmascript c'est-à-dire que l'xmascript c'est un standard javascript qui a été créé pour assurer l'inter-opérabilité des pages web sur les différents broseurs et aujourd'hui on s'en sert encore surtout sur du client-side scripting et en Node.js aussi qui a un peu redonné ses lait de noblesse sur le côté serveur de l'utilisation de l'xmascript et l'xmascript c'était intéressant parce que sa serveur représentait des données en unicode c'était pas lié à un langage de programmation même si c'était du coup même si c'est une façon de représenter du javascript et on s'est rendu compte que c'était quand même un peu moins utilisé que le xml donc du coup les gens de l'internet engineering taskworks se sont rendus compte du coup de cette utilisation et que ce serait peut-être bien de la tout simplement sécuriser c'est comme ça qu'est né le groupe josé qui qui avait pour but du coup de créer un standard en javascript pour signer et encriter les échanges sur le web donc ils ont créé le groupe en 2011 et sa créé beaucoup beaucoup beaucoup des comment dire de ce qu'on a vu avant à savoir la chisel web encryption de la web token et ce genre de choses le groupe a été créé par donc l'IETF et il était composé majoritairement de ces 4 personnes qui ont vraiment fait le plus gros du travail mais il faut absolument pas oublier toutes les autres personnes derrière qui ont réussi aussi à apporter leurs petites pierres à l'édifice et donc ce que je vous propose c'est d'aller voir carrément ça se fait un json web token hop je vous emmène dans macrom tab voilà si vous allez sur gwt.io vous avez une playground et donc ça permet très rapidement de voir donc là on voit que la première chose à faire c'est de choisir l'algorithme c'est l'algorithme avec lequel on va encrypter et désencrypter notre json web token et ce qu'il faut savoir c'est que cette algorithme est toujours définie dans le json web token en tant que tel donc du coup on peut le changer voilà on peut le changer et à chaque fois qu'on envoie un json web token on peut définir nous même l'algorithme là ensuite on va avoir la partie très intéressante donc c'est le payload c'est là qu'on va vouloir mettre la data intéressante donc là par exemple dans mon cas je mettrai Valerian et vous voyez bien que le token change en même temps admin peut-être pas du coup hop voilà et y a t c'est issued at donc c'est le timestamp de à quel moment le token a été fait là on a spécifié notre algorithm d'encryption on va quand même encoder en base 64 le header concaténa avec un point encoder en base 64 rajouter un secret et c'est bon comme ça on a un JWT qu'on va pouvoir partager très rapidement c'est très sympa parce que c'est hyper simple à faire c'est très portable on va pouvoir aussi du coup rajouter des droits alors on voit bien que je ne suis plus admin donc on va pouvoir en ajouter en enlever le seul petit problème que l'on va avoir c'est que de fait les attaquants aussi peuvent décider de peuvent décider de avec quel comment dire avec quel algorithm en fait leur token sera décrypté donc c'est ça on aime pour la complicité de génération on aime parce que c'est compact et parce que quand je vous disais du coup la liste de droits elle est implémentée dedans et on aime parce que c'est un standard qu'aujourd'hui tout l'engagement de programmation c'est décrypté du json web token et donc c'est hyper simple par contre comme je vous disais l'attaquant peut choisir l'algorithme de signature et ça on n'aime pas trop on a fait à peu près le tour plus utilisé ce que je vous propose maintenant c'est de vous montrer comment rajouter simplement et efficacement une petite couche de sécurité en plus à vos applications avec ce qu'on appelle des one time password alors hop, je vais vous partager mon code et je vais vous présenter la fenêtre complète ok alors ce que j'ai fait là c'est une petite application Rails dans laquelle j'ai tout simplement caché mes clés d'API puisqu'on va utiliser le one time password generator de Twilio tout ça c'est caché j'ai aussi également déjà rajouté les gemmes nécessaires et ce qu'on va faire c'est donc créer un petit service de générations de one time password pour pouvoir sécuriser facilement nos applications alors comme vous pouvez aller le voir dans mes routes voilà j'ai déjà créé toutes mes routes donc on va initialiser le one time password on va vérifier du coup on va initialiser la vérification et ensuite on va valider le token si c'est validé on va efficher une vue generated comme on a en rubien Rails c'est du mvc model view controller donc là nous avons le routing nous n'avons pas besoin de modèle puisque là on va pas bloquer l'accès à une ressource particulière donc on va aller directement au controller j'ai du coup remis mes petites actions ici init OTP il n'y a pas grand chose à faire pour initialiser l'OTP ce que je vais avoir besoin de faire c'est tout simplement de vous demander un numéro de téléphone donc je vais tout simplement créer un formulaire et ce formulaire je vais pas tout refaire à la main voilà ce formulaire ce qu'il va faire c'est que il va tout simplement prendre un numéro de téléphone donc on va lui ajouter un label un bouton de submits et une clé pour avoir le phone number c'est ça du coup le label phone number avec un petit message sympa pour les utilisateurs un texte field du coup dans lequel vous allez pouvoir entrer du texte je ne rajoute pas de validation supplémentaire mais au moment d'essayer vous allez avoir une 500 si vous entre un peu n'importe quoi dedans donc voilà si vous avez envie d'essayer de faire crash mon app de votre côté vous pourrez vous aurez juste une 500 évidemment une fois que j'ai un phone number déjà je lui dis d'aller sur la méthode vérifier je retourne dans mon contrôleur et là dans ma méthode vérifier je vais initialiser une vérification ce que je vous ai pas montré avant c'est qu'en fait dans ma config je me suis fait un petit initializer dans lequel j'ai déjà créé un res clients pour pouvoir interagir avec les API et surtout un petit service de vérification donc voilà je vais pouvoir aller utiliser ça maintenant dans mon contrôleur donc ce que je veux faire c'est que je veux faire une vérification vérification ok donc je vais utiliser le client que j'ai initialisé donc Twilio client je lui demandais me faire une vérification ça vcs en termes de service du coup je lui passais mon service de vérification donc je lui passais l'ID donc je vais chercher mon Twilio service ssid Twilio service.ssid je vais lui demander de performer une vérification et je vais donc créer une nouvelle vérification avec des paramètres que je vais récupérer et c'est là que j'utilise mon phone number donc je vais récupérer dans les paramètres de la requête puisque ça a été une requête post et là je vais spécifier qu'on veut le faire par sms en temps normal on pourrait aussi proposer à nos utilisateurs de le faire avec un email si il le souhaite moi je n'ai pas voulu j'aime bien les sms en ce sens que c'est simple c'est rapide vous n'avez même pas besoin d'ouvrir le sms pour pouvoir lire le code selon vos paramètres de blocage on va dire est ce que vous affichez sur votre écran ou pas donc et surtout je vais lui replacer du coup pour la suite pour la suite de la vérification du coup mon paramètre phone number puisque là il arrive sur vérifier il va donc du coup créer un service de vérification normalement à ce moment-là c'est là qu'on reçoit sms et je vais quand même garder mon email de téléphone je vais pouvoir en avoir deux ans après donc une fois que j'ai fait ça je vais vouloir valider mon token donc déjà mon verify je vais lui dire ok, là j'ai ce qu'il faut donc normalement on va pouvoir montrer à la personne comment dire en fait c'est à ce moment-là pardon donc je vais dans mon contrôleur j'ai demandé mon numéro de téléphone j'ai instantié ma vérification donc moi en tant que utilisatrice à ce moment-là je vais recevoir un message avec le code et donc moi en tant que dev c'est le moment où je vais demander à mon utilisateur quel est le code qui lui a été transmis donc d'un verify pareil on va faire un nouveau formulaire cette fois-ci on va lui dire d'aller taper sur l'URL Validate token ce sera toujours une méthode poste comme vous pouvez le voir ici hop et cette fois-ci du coup on va entrer le code et je vais me passer en petit un petit hidden field le phone number si jamais le code que j'ai reçu n'est pas bon je vais devoir initialiser et surtout re-verifier avec le numéro de téléphone et le code donc voilà là on va demander à nouveau de valider l'identité donc ça c'est tout simplement le formulaire et ce qui est intéressant c'est de retourner dans le contrôleur et là au niveau du Validate token donc on va aller faire notre check donc on va utiliser à nouveau le Twilio Client point verify on va du coup utiliser je vais mettre ça dans une variable quand même c'est plus intéressant si je peux vérifier ce qui se passe derrière après hop donc voilà donc verify et ensuite je vais dire au niveau des services mon service Aside comme avant une fois que j'ai ça je vais lui dire de me faire un check de vérification et il faut qu'il me crée du coup mon check de vérification hop et donc du coup on trouve c'est là qu'on récupère notre phone number on s'est passé du coup en on s'il est passé en idonparam mais c'est parce que là je voulais pas utiliser de Java script sinon vous le stocker tout simplement et puis vous le récupérer quand vous en avez besoin dans la session hop et le code du coup c'est le code que vous m'avez mis dans la petite box et donc vérification code voilà ensuite on va lui dire donc à ce moment là du code il aura fait le vérification check je vais lui demander du coup si mon code un status si j'avais mon status c'est approve donc approuvé approve yes il fait quelque chose sinon fait moi autre chose donc si ça approuvait moi j'aimerais bien en fait tout simplement je vous ai préparé aussi dans mes petites variables d'environnement un petit code promo de folio donc du coup vous le verrez si j'avais votre vérification approuvée donc redirect to action hop redirect to action et ça c'est comme ça un petit action validity hop voilà et sinon à ce moment là j'aimerais afficher un message donc flash.alert hop un petit message donc bon code try again et on va utiliser à ce moment là il va falloir que je repasse du coup la variable phone number histoire qu'on ait pas de soucis et qu'on puisse à nouveau checker sur le create enfin pour la vérification check du coup à nouveau sur le passé pour ne pas de soucis de variable mais puis à ce moment là du coup on va à nouveau rendre la vue d'avant donc la vue vérifier une fois qu'on a tout ça a priori on a de quoi du coup gérer la probation et reproposer le formulaire avec les bonnes variables une fois que ce n'est plus le cas la seule chose qu'il va en rester à faire du coup c'est validity et du coup c'est de vous filer le code dont je vous parlais donc un petit message sans pas et voilà et je vous ai caché du coup dans mes variables d'environnement un petit code donc je vous le file là et voilà je vais maintenant oopsie je vais maintenant lancer mon serveur on va aller le visiter sur localhost 3000 et moi je le vois bien sauf que faire des choses pour moi c'est sympa, c'est plus sympa de partager donc ce que je vais faire c'est que je vais utiliser ngrock et pour pouvoir servir et donc créer un petit tunnel tout simplement entre mon localhost et l'application et comme j'utilise une version de rubis un peu récente je vais tout simplement lui dire dans mon environnement là on en dev d'ajouter mon URL ngrock à mes host autorisé donc voilà une fois que j'ai ça je vais donc j'ai mon serveur qui tourne je vais aller dire à ngrock de servir mon port 3000 eWorldWideWeb et là du coup c'est le moment où vous pouvez aller tout simplement sur ngrock.io hop ah non je suis fou je voulais ouais c'est ça cette adresse là et puis vous pouvez tester par vous-même alors effectivement vous aurez vous aurez à entrer votre numéro de téléphone le numéro de téléphone doit être au format plus 33 plus votre numéro derrière et vous allez recevoir un message en application n'enregistre absolument rien en database et dans tous les cas je vais l'acquiler complètement après cette session donc ne vous en faites pas je ne vais garder aucun de vos petits mots de passe ouais Valerian on est on a dépassé le temps ah ou mince j'avais pas du tout elle n'y a pas de problème du coup est ce que tu veux conclure ouais de toute façon c'était la pense c'était vraiment voilà vous testez vous avez le petit code et donc ma conclusion c'est que alors c'est celle-ci ma conclusion c'est que pour rester safe vous devez vous en tant que développeur du coup mettre en place tout ce dont on a parlé avant à savoir des méthodes d'authentification et surtout des méthodes des listes de droits ce genre de choses en fait pour pouvoir protéger les bonnes data et les bonnes ressources en tant que utilisateur vous pouvez aussi utiliser du coup des applications de vérification tiers vous pouvez leur en donner l'accès en tant que développeur surtout ne stockez pas vos mots de passe dans le cloud sécurisez votre téléphone avec déjà un mot de passe général sur le téléphone et éventuellement sur les applications directement et surtout en tant que développeur et en tant que utilisateur privilégiez les one time passports pour les opérations sensibles ça permet de s'assurer que c'est bien la personne qui a fait la demande qui est bien en possession du téléphone à ce moment-là et ça assure du coup du coup que la sécurité est vraiment intéressante en plus merci à tous et toutes