Upload
francois-marier
View
514
Download
2
Embed Size (px)
DESCRIPTION
Persona est un système d'identité fédéré qui met l'emphase sur la protection de la vie privée et la convivialité tout en facilitant le travail des développeurs Web. Cette présentation a pour but d'introduire ce système et les éléments de cryptographies sur lesquels il repose ainsi que de donner un exemple concret de son utilisation dans une application Web.
Citation preview
un système ouvertet fédéré pour
l'authentificationdes utilisateurs
une solution au problème desmots de passe sur le Web
pourquoi ?
difficilesà
retenir
c'est tropfacile de lesréutiliser
alternatives
décentralisé
moi.com/u/francois
vie privée®
comment çamarche ?
<signatures numériques 101>
privée publique
publique
Je m'appelleFrançois Marieret mon adressede courriel esttrop longuepour cette note.
privée
Je m'appelleFrançois Marieret mon adressede courriel esttrop longuepour cette note.
publique
Je m'appelleFrançois Marieret mon adressede courriel esttrop longuepour cette note.
signer vérifier
</signatures numériques 101>
authentification?
clé publique
authentification?
clé publique signée
clé publique
authentification?
Valide pour : 2 minutes
wikipedia.org
assertion
Valide pour : 2 minutes
wikipedia.org
vérifier l'audience
assertion
Valide pour : 2 minutes
wikipedia.org
vérifier l'audiencevérifier l'expiration
assertion
Valide pour : 2 minutes
wikipedia.org
vérifier l'audiencevérifier l'expirationvérifier la signature
assertion
assertion
Valide pour : 2 minutes
wikipedia.org
clé publique
assertion
Valide pour : 2 minutes
wikipedia.org
assertion
cookie
c'est pourquand ?
serveurs de courriel
navigateurs
serveurs de courriel
navigator.id.*
navigateurs modernes
>= 8
>= 8
navigateurs modernes
vous pouvez utiliser Personadès aujourd'hui
comment l'utilisersur votre site ?
<script src=”https://login.persona.org/include.js”></script></body></html>
navigator.id.watch({ loggedInEmail: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.watch({ loggedInUser: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.request()
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});
$ curl -d "assertion=<ASSERTION>& audience=http://123done.org" https://verifier.login.persona.org/verify
$ curl -d "assertion=<ASSERTION>& audience=http://123done.org" https://verifier.login.persona.org/verify
{ status: “okay”,
audience: “http://123done.org”,
expires: 1344849682560,
email: “[email protected]”,
issuer: “login.persona.org”}
{ status: “failed”,
reason: “assertion has expired”}
navigator.id.logout()
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});
1. charger bibliothèque JavaScript
1. charger bibliothèque JavaScript
2. écrire onlogin & onlogout
1. charger bibliothèque JavaScript
2. écrire onlogin & onlogout
3. ajouter boutons (dé)connexion
1. charger bibliothèque JavaScript
2. écrire onlogin & onlogout
3. ajouter boutons (dé)connexion
4. vérifier l'assertion
pour nous aider ...
utilisez Personasur votre site
dites-nous ce quevous en penser
demandez lesupport Persona
utilisez Personasur votre site
dites-nous ce quevous en penser
demandez lesupport Persona
utilisez Personasur votre site
dites-nous ce quevous en penser
demandez lesupport Persona
Pour en savoir plus :
https://login.persona.org/http://identity.mozilla.com/
https://developer.mozilla.org/docs/Persona/Why_Personahttps://developer.mozilla.org/docs/Persona/Quick_Setup
https://github.com/mozilla/browserid-cookbookhttps://developer.mozilla.org/docs/Persona/Libraries_and_plugins
http://123done.org/https://wiki.mozilla.org/Identity#Get_Involved
@fmarier http://fmarier.org
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
document de support
© 2013 François Marier <[email protected]>Cette œuvre est mise à disposition selon les termes de laLicence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 Nouvelle-Zélande.
Top 500 des mots de passe: http://xato.net/passwords/more-top-worst-passwords/
Parchemin: https://secure.flickr.com/photos/27613359@N03/6750396225/
Biscuits: https://secure.flickr.com/photos/jamisonjudd/4810986199/
Uncle Sam: https://secure.flickr.com/photos/donkeyhotey/5666065982/
Passeport canadien: https://secure.flickr.com/photos/rustyangel/5839428526/
Sources des photos :