diff --git a/content/slides/1337/images/authentication/jwt-auth.png b/content/slides/1337/images/authentication/jwt-auth.png
new file mode 100644
index 0000000000000000000000000000000000000000..ada23c756b67c380b9c6d389fd1b5bf4fca90721
Binary files /dev/null and b/content/slides/1337/images/authentication/jwt-auth.png differ
diff --git a/content/slides/1337/images/authentication/oAuth.png b/content/slides/1337/images/authentication/oAuth.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9ec6d43bf8eb08675f2f1b468743a112983cb07
Binary files /dev/null and b/content/slides/1337/images/authentication/oAuth.png differ
diff --git a/content/slides/1337/md/authentication.md b/content/slides/1337/md/authentication.md
index 670e4bb50c6db0eac40635a6f26c0a817dfb51c4..cf377a489f2725cc698d0e949878eef412a2e4cf 100644
--- a/content/slides/1337/md/authentication.md
+++ b/content/slides/1337/md/authentication.md
@@ -2,8 +2,11 @@
 
 "<i class="fa fa-wikipedia-w" aria-hidden="true"></i> processus permettant à un système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité à des ressources du système (systèmes, réseaux, applications…) conformément au paramétrage du contrôle d'accès ."
 
+
+## 3 concepts
+
 * identification
-* authentification
+* **authentification**
 * ACL
 
 
@@ -12,22 +15,14 @@
 * ce que je sais
   * mot de passe, numéro d'identification personnel
 * ce que je possède
-  * carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, préiphérique
+  * carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, périphérique
 * ce que je suis
   * photo, caractéristique physique, voire biométrie
 * ce que je sais faire
   * geste, signature
 
 
-## sur le web
-
-* authentification HTTP
-  * basic
-  * digest
-* authentification par formulaire
-* authentification déportée
-  * OAuth
-* authentification d'API
+# quelques techniques
 
 
 ## apache & .htaccess
@@ -174,7 +169,8 @@ htdigest /var/www/http-basic/.htdigest "authdigest" otheruser
 
 ## auth digest
 
-le client demande un contenu (protégé)
+* le client demande un contenu (protégé)
+* le serveur répond que le contenu est protégé
 
 ```http
 HTTP/1.1 401 Unauthorized
@@ -187,9 +183,12 @@ WWW-Authenticate: Digest realm="OwaspSample",
 ```
 
 
-## auth digest
+## auth basic
 
-le serveur répond que le contenu est protégé
+![HTTP digest auth](images/authentication/http-basic-auth.png "HTTP digest auth")
+
+
+## auth digest
 
 ```http
 GET /example/owasp/test.asmx HTTP/1.1
@@ -237,47 +236,22 @@ le plus courant
 * le mot de passe est transmis en clair au serveur
   * https :)
 * stocker les mots de passe en clair sur le serveur est un mauvaise idée
-  * stocker les hashés est un bonne pratique
-    * [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose)
-
-Note:
-- peut être en GET
-  - plus facile pour le scripter en brute force
-    - et encore
-  - passe dans l'url?
-    - server-status intéressant
-- http sniffbale https ok
-- peut avoir du code coté client (calcul du md5 en js avant soumiision par exemple)
-- 3 étapes
-  - formulaire
-  - traitement serveur
-  - la ressource (notamment accès direct) ou information 403 avec la suite
-- dépend beaucoup des développeurs
-  - best practice
-  - esapi OWASP
-- récupération du token de session suffit souvent (passé par GET par exemple SID ou par cookie)
-- potentiellement
-  - lock out sur brute force
-  - paramètre assitionel - timestamp
-- XSS redirect user vers une page d'auth fake
-- SQL injection
-- marche aussi avec un interpréteur de commande LDAP
-- pour l'attaque des fois ca répond 200 alors que c'est non (ca devrait être 403)
-  - méfiance
+  * [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose)
+* stocker les hashés est une bonne pratique
+* saler les hashés est encore mieux
 
 
 ## oAuth
 
-* tri-partie
+![oAuth](images/authentication/oAuth.png "oAuth")
 
-<div style="text-align: center">
-![oAuth](images/oAuth.png "oAuth")<!-- .element style="width: 50%" -->
-</div>
 
-| Version   | SSL         | Token           | Technique                |
-| --------- | ----------- | --------------- | ------------------------ |
-| oAuth 1.0 | optionel    | sans expiration | mise en place compliquée |
-| oAuth 2.0 | obligatoire | révocable       | simple et plus léger     |
+## oAuth
+
+| Version | SSL         | Token           | Technique                |
+| ------- | ----------- | --------------- | ------------------------ |
+|  1.0    | optionel    | sans expiration | mise en place compliquée |
+|  2.0    | obligatoire | révocable       | simple et plus léger     |
 
 * 1.0 incompatible avec 2.0
 * <i class="fa fa-newspaper-o"></i> [How to Secure Your REST API using Proven Best Practices](https://stormpath.com/blog/secure-your-rest-api-right-way)
@@ -291,19 +265,22 @@ Note:
 - confiance dans consumer (l'app qui demande l'autorisation)
 
 
-## Les attaques brute force
+## JWT
+
+[![jwt auth](images/authentication/jwt-auth.png "jwt auth")<!-- .element style="width: 80%" -->](https://blog.ippon.fr/2017/10/12/preuve-dauthentification-avec-jwt/)
 
-* Différents types
-  * Attaque par dictionnaires
-    * devine automatiquement les paramètres d'authentification à partir d'une liste d'utilisateur / mot de passe
+
+## force brute
+
+* par dictionnaires
+  * liste d'utilisateurs + list de mots de passe
     * optimisable avec de la probabilité, [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt), de l'ingénieurie sociale, du flaire etc ...
-  * Attaque par recherche
-    * essayer toutes les combinisaons de caractères
-    * trouver un mot de passe de 8 caractères composé exclusivement de caractères alphabétiques: 26<sup>8</sup> possibilités
-  * Attaque par recherche basée sur des règles
-    * décliner via des règles les propositions d'un dictionnaire
-    * leetspeakation automatique
-    * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username
+* par recherche
+    * combinatoire
+* hybride
+  * décliner via des règles les propositions d'un dictionnaire
+  * leetspeakation automatique
+  * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username
 
 
 ## [THC Hydra](http://www.thc.org/thc-hydra/)
@@ -372,6 +349,16 @@ unshadow /etc/passwd /etc/shadow > mypasswd
 </pre>
 
 
+## 2AF
+
+https://www.google.com/landing/2step/
+
+
+## Yubikey
+
+[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)
+
+
 ## <i class="fa fa-medkit"></i> Se protéger
 
 * bien choisir son système d'authentification
@@ -388,3 +375,6 @@ unshadow /etc/passwd /etc/shadow > mypasswd
 * sensibilisez vos utilisateurs
   * [<i class="fa fa-desktop"></i> Se protéger avec de bons mots de passe](http://doc.m4z3.me/_/bpu/se_proteger_avec_de_bons_mots_de_passe.htm#/cover)
   * [<i class="fa fa-video-camera"></i> Se protéger avec de bons mots de passe](http://webtv.u-clermont1.fr/media-MEDIA150410174414391)
+
+* mettre en place en deuxième facteur d'authentification
+* utiliser la crypto asymétrique
diff --git a/content/slides/privacy/md/passwords.md b/content/slides/privacy/md/passwords.md
index fc2ac77cd324cd305634e386497193edbbbac9ef..306e65542e289fd34bc1d477840877177bdcb09f 100644
--- a/content/slides/privacy/md/passwords.md
+++ b/content/slides/privacy/md/passwords.md
@@ -197,8 +197,3 @@
 ## Solution Hardware
 
 [![mooltipass](images/passwords/mooltipass.jpg)](https://www.themooltipass.com/)
-
-
-## [Ubikey](https://www.yubico.com/)
-
-[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)