![Page 1: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/1.jpg)
François Marier – @fmarier
Mozilla Personaa federated and privacy-protecting login system for the whole Web
![Page 2: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/2.jpg)
passwords
![Page 3: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/3.jpg)
problem #1:
passwords are hard to secure
![Page 4: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/4.jpg)
![Page 5: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/5.jpg)
![Page 6: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/6.jpg)
![Page 7: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/7.jpg)
![Page 8: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/8.jpg)
![Page 9: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/9.jpg)
![Page 10: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/10.jpg)
![Page 11: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/11.jpg)
![Page 12: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/12.jpg)
![Page 13: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/13.jpg)
![Page 14: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/14.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
![Page 15: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/15.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
![Page 16: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/16.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
![Page 17: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/17.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
![Page 18: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/18.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
![Page 19: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/19.jpg)
bcrypt / scrypt / pbkdf2
per-user salt
site secret
password & lockout policies
secure recovery
20132013
passwordpassword
guidelines
guidelines
![Page 20: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/20.jpg)
passwords are hard to secure
they are a liability
![Page 21: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/21.jpg)
ALTER TABLE userDROP COLUMN password;
![Page 22: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/22.jpg)
problem #2:
passwords are hard to remember
![Page 23: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/23.jpg)
![Page 24: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/24.jpg)
![Page 25: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/25.jpg)
pick an easy password
![Page 26: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/26.jpg)
pick an easy password
use it everywhere
![Page 27: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/27.jpg)
passwords are hard to remember
they need to be reset
![Page 28: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/28.jpg)
![Page 29: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/29.jpg)
controlemail
account
controlall
accounts=
![Page 30: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/30.jpg)
![Page 31: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/31.jpg)
“People want a littledating before marriage.”
Eric Vishria – Rockmelt
![Page 32: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/32.jpg)
![Page 33: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/33.jpg)
decentralised
![Page 34: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/34.jpg)
myid.com/u/francois
![Page 35: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/35.jpg)
![Page 36: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/36.jpg)
![Page 37: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/37.jpg)
privacy®
![Page 38: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/38.jpg)
existing login systemsare not good enough
![Page 39: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/39.jpg)
ideal web-wide identity system
![Page 40: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/40.jpg)
● decentralised● simple● cross-browser
ideal web-wide identity system
![Page 41: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/41.jpg)
● decentralised● simple● cross-browser
ideal web-wide identity system
![Page 42: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/42.jpg)
● decentralised● simple
cross-browser
ideal web-wide identity system
![Page 43: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/43.jpg)
what if it were a standardpart of the web browser?
![Page 44: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/44.jpg)
![Page 45: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/45.jpg)
how does it work?
![Page 47: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/47.jpg)
why email addresses?
![Page 48: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/48.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 49: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/49.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 50: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/50.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 51: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/51.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 52: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/52.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 53: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/53.jpg)
why email addresses?
already federated
people know their email
natural association between person & email
easy to have separate identities
most sites need a way to contact users
no lock-in
![Page 56: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/56.jpg)
Persona is already adecentralised system
![Page 57: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/57.jpg)
decentralisation is the answer, but it's not
a product adoption strategy
![Page 58: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/58.jpg)
we can't wait for all domainsto adopt Persona
![Page 59: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/59.jpg)
we can't wait for all domainsto adopt Persona
solution: a temporarycentralised fallback
![Page 61: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/61.jpg)
Persona already workswith all email domains
![Page 62: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/62.jpg)
identity bridging
![Page 64: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/64.jpg)
![Page 65: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/65.jpg)
![Page 66: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/66.jpg)
![Page 67: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/67.jpg)
Persona supportsall modern browsers
>= 8
![Page 68: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/68.jpg)
Persona is decentralised,simple and cross-browser
![Page 69: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/69.jpg)
it's simple for users, but is it also
simple for developers?
![Page 70: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/70.jpg)
![Page 71: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/71.jpg)
<script src=”https://login.persona.org/include.js”></script></body></html>
![Page 72: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/72.jpg)
navigator.id.watch({ loggedInEmail: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 73: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/73.jpg)
navigator.id.watch({ loggedInUser: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 74: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/74.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 75: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/75.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 76: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/76.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 77: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/77.jpg)
![Page 78: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/78.jpg)
navigator.id.request()
![Page 79: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/79.jpg)
![Page 80: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/80.jpg)
![Page 81: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/81.jpg)
![Page 82: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/82.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 83: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/83.jpg)
eyJhbGciOiJEUzEyOCJ9.eyJwdWJsaWMta2V5Ijp7ImFsZ29yaXRobSI6IkRTIiwieSI6ImNhZDg2ZDgyNWU0MjBkMGI4Njk5MjM4ZDM5ZTFjYjIyOGMyMTk1NWFiMzcwOTQ1YzExNzBhMzM4NjcyNDM0ZDJmNGYxZDg5ZjFkZjMzNmU1ZjZjZjk2YjhiOTlmMjgyNmFjNTYxZmI1YWMyYTc4ZjNhMzBkNGYxNTVhYjc3ZGExYmY3MWU4ZGMzNjQ0MmU2NjQ3MmE5Mjg0N2I2YjFlNDRkMTJlM2IwMjVjOWZmNTFmNDdhMWE5ZWYyMGZhOTVjMTcxZjBkMTYzNGE4ZTY4YTk5NWU3ZjFjY2FiYTJlOTRjYTI3ODE1ZWVkMTcxYjY1YTJmZGQzNTE1NjY3OTI0ZjUiLCJwIjoiZmY2MDA0ODNkYjZhYmZjNWI0NWVhYjc4NTk0YjM1MzNkNTUwZDlmMWJmMmE5OTJhN2E4ZGFhNmRjMzRmODA0NWFkNGU2ZTBjNDI5ZDMzNGVlZWFhZWZkN2UyM2Q0ODEwYmUwMGU0Y2MxNDkyY2JhMzI1YmE4MWZmMmQ1YTViMzA1YThkMTdlYjNiZjRhMDZhMzQ5ZDM5MmUwMGQzMjk3NDRhNTE3OTM4MDM0NGU4MmExOGM0NzkzMzQzOGY4OTFlMjJhZWVmODEyZDY5YzhmNzVlMzI2Y2I3MGVhMDAwYzNmNzc2ZGZkYmQ2MDQ2MzhjMmVmNzE3ZmMyNmQwMmUxNyIsInEiOiJlMjFlMDRmOTExZDFlZDc5OTEwMDhlY2FhYjNiZjc3NTk4NDMwOWMzIiwiZyI6ImM1MmE0YTBmZjNiN2U2MWZkZjE4NjdjZTg0MTM4MzY5YTYxNTRmNGFmYTkyOTY2ZTNjODI3ZTI1Y2ZhNmNmNTA4YjkwZTVkZTQxOWUxMzM3ZTA3YTJlOWUyYTNjZDVkZWE3MDRkMTc1ZjhlYmY2YWYzOTdkNjllMTEwYjk2YWZiMTdjN2EwMzI1OTMyOWU0ODI5YjBkMDNiYmM3ODk2YjE1YjRhZGU1M2UxMzA4NThjYzM0ZDk2MjY5YWE4OTA0MWY0MDkxMzZjNzI0MmEzODg5NWM5ZDViY2NhZDRmMzg5YWYxZDdhNGJkMTM5OGJkMDcyZGZmYTg5NjIzMzM5N2EifSwicHJpbmNpcGFsIjp7ImVtYWlsIjoiZm9vQG1vY2tteWlkLmNvbSJ9LCJpYXQiOjEzNzY1MzY0NjM1MTgsImV4cCI6MTM3NjU0MDA2MzUxOCwiaXNzIjoibW9ja215aWQuY29tIn0.IeUR0_3ayAZkdNSXjF4aaCwSHnHa4X1lzrjX-qkNcPIbXx1hmQQPwg~eyJhbGciOiJEUzEyOCJ9.eyJleHAiOjEzNzY1MzY3MDc2MzUsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QifQ.NJ8H1qZcWXbXfPJSdgB_mORHQ442ZkY0XYfdQsZZsIjooG7k7qWyVw
![Page 84: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/84.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 85: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/85.jpg)
def verify_assertion(assertion):
page = requests.post( 'https://verifier.login.persona.org/verify', data={ "assertion": assertion, "audience": 'http://123done.org'} )
data = page.json return data.status == 'okay'
![Page 86: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/86.jpg)
def verify_assertion(assertion):
page = requests.post( 'https://verifier.login.persona.org/verify', data={ "assertion": assertion, "audience": 'http://123done.org'} )
data = page.json return data.status == 'okay'
![Page 87: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/87.jpg)
def verify_assertion(assertion):
page = requests.post( 'https://verifier.login.persona.org/verify', data={ "assertion": assertion, "audience": 'http://123done.org'} )
data = page.json return data.status == 'okay'
![Page 88: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/88.jpg)
{ status: “okay”,
audience: “http://123done.org”,
expires: 1344849682560,
email: “[email protected]”,
issuer: “login.persona.org”}
![Page 89: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/89.jpg)
{ status: “failed”,
reason: “assertion has expired”}
![Page 90: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/90.jpg)
![Page 91: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/91.jpg)
![Page 92: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/92.jpg)
navigator.id.logout()
![Page 93: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/93.jpg)
navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});
![Page 94: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/94.jpg)
![Page 95: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/95.jpg)
1. load javascript library
![Page 96: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/96.jpg)
1. load javascript library
2. setup login & logout callbacks
![Page 97: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/97.jpg)
1. load javascript library
2. setup login & logout callbacks
3. add login and logout buttons
![Page 98: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/98.jpg)
1. load javascript library
2. setup login & logout callbacks
3. add login and logout buttons
4. verify proof of ownership
![Page 99: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/99.jpg)
1. load javascript library
2. setup login & logout callbacks
3. add login and logout buttons
4. verify proof of ownership
no API keyneeded
![Page 100: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/100.jpg)
you can add support forPersona in four easy steps
![Page 101: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/101.jpg)
one simple request
![Page 102: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/102.jpg)
![Page 103: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/103.jpg)
building a new site:default to Persona
![Page 104: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/104.jpg)
working on an existing site/app:add support for Persona
![Page 105: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/105.jpg)
before
![Page 106: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/106.jpg)
after
![Page 107: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/107.jpg)
after
navigator.id.request()
![Page 108: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/108.jpg)
![Page 109: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/109.jpg)
ALTER TABLE userDROP COLUMN password;
![Page 110: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/110.jpg)
To learn more about Persona:
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
![Page 111: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/111.jpg)
identity provider API
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
![Page 112: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/112.jpg)
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
identity provider API
![Page 113: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/113.jpg)
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
identity provider API
![Page 114: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/114.jpg)
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
identity provider API
![Page 115: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/115.jpg)
https://eyedee.me/.well-known/browserid:
{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}
identity provider API
![Page 116: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/116.jpg)
identity provider API
1. check for your /.well-known/browserid
2. try the provisioning endpoint
3. show the authentication page
4. call the provisioning endpoint again
![Page 117: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/117.jpg)
identity provider API
1. check for your /.well-known/browserid
2. try the provisioning endpoint
3. show the authentication page
4. call the provisioning endpoint again
![Page 118: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/118.jpg)
identity provider API
1. check for your /.well-known/browserid
2. try the provisioning endpoint
3. show the authentication page
4. call the provisioning endpoint again
![Page 119: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/119.jpg)
identity provider API
1. check for your /.well-known/browserid
2. try the provisioning endpoint
3. show the authentication page
4. call the provisioning endpoint again
![Page 120: Persona: a federated and privacy-protecting login system for the whole Web](https://reader033.vdocuments.site/reader033/viewer/2022052618/554be362b4c90556328b48c4/html5/thumbnails/120.jpg)
© 2013 François Marier <[email protected]>This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 New Zealand License.
Hotel doorman: https://secure.flickr.com/photos/wildlife_encounters/8024166802/
Top 500 passwords: http://xato.net/passwords/more-top-worst-passwords/
Parchment: https://secure.flickr.com/photos/27613359@N03/6750396225/
Uncle Sam: https://secure.flickr.com/photos/donkeyhotey/5666065982/
Restaurant dinner: https://secure.flickr.com/photos/yourdon/3977084094/
Stop sign: https://secure.flickr.com/photos/artbystevejohnson/6673406227/
Photo credits: