+ All Categories
Home > Technology > Persona: a federated and privacy-protecting login system for the whole Web

Persona: a federated and privacy-protecting login system for the whole Web

Date post: 08-May-2015
Category:
Upload: francois-marier
View: 136 times
Download: 0 times
Share this document with a friend
120
François Marier – @fmarier Mozilla Persona a federated and privacy-protecting login system for the whole Web
Transcript
Page 1: Persona: a federated and privacy-protecting login system for the whole Web

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

passwords

Page 3: Persona: a federated and privacy-protecting login system for the whole Web

problem #1:

passwords are hard to secure

Page 4: Persona: a federated and privacy-protecting login system for the whole Web
Page 5: Persona: a federated and privacy-protecting login system for the whole Web
Page 6: Persona: a federated and privacy-protecting login system for the whole Web
Page 7: Persona: a federated and privacy-protecting login system for the whole Web
Page 8: Persona: a federated and privacy-protecting login system for the whole Web
Page 9: Persona: a federated and privacy-protecting login system for the whole Web
Page 10: Persona: a federated and privacy-protecting login system for the whole Web
Page 11: Persona: a federated and privacy-protecting login system for the whole Web
Page 12: Persona: a federated and privacy-protecting login system for the whole Web
Page 13: Persona: a federated and privacy-protecting login system for the whole Web
Page 14: Persona: a federated and privacy-protecting login system for the whole Web

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

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

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

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

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

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

passwords are hard to secure

they are a liability

Page 21: Persona: a federated and privacy-protecting login system for the whole Web

ALTER TABLE userDROP COLUMN password;

Page 22: Persona: a federated and privacy-protecting login system for the whole Web

problem #2:

passwords are hard to remember

Page 23: Persona: a federated and privacy-protecting login system for the whole Web
Page 24: Persona: a federated and privacy-protecting login system for the whole Web
Page 25: Persona: a federated and privacy-protecting login system for the whole Web

pick an easy password

Page 26: Persona: a federated and privacy-protecting login system for the whole Web

pick an easy password

use it everywhere

Page 27: Persona: a federated and privacy-protecting login system for the whole Web

passwords are hard to remember

they need to be reset

Page 28: Persona: a federated and privacy-protecting login system for the whole Web
Page 29: Persona: a federated and privacy-protecting login system for the whole Web

controlemail

account

controlall

accounts=

Page 30: Persona: a federated and privacy-protecting login system for the whole Web
Page 31: Persona: a federated and privacy-protecting login system for the whole Web

“People want a littledating before marriage.”

Eric Vishria – Rockmelt

Page 32: Persona: a federated and privacy-protecting login system for the whole Web
Page 33: Persona: a federated and privacy-protecting login system for the whole Web

decentralised

Page 34: Persona: a federated and privacy-protecting login system for the whole Web

myid.com/u/francois

Page 35: Persona: a federated and privacy-protecting login system for the whole Web
Page 36: Persona: a federated and privacy-protecting login system for the whole Web
Page 37: Persona: a federated and privacy-protecting login system for the whole Web

privacy®

Page 38: Persona: a federated and privacy-protecting login system for the whole Web

existing login systemsare not good enough

Page 39: Persona: a federated and privacy-protecting login system for the whole Web

ideal web-wide identity system

Page 40: Persona: a federated and privacy-protecting login system for the whole Web

● decentralised● simple● cross-browser

ideal web-wide identity system

Page 41: Persona: a federated and privacy-protecting login system for the whole Web

● decentralised● simple● cross-browser

ideal web-wide identity system

Page 42: Persona: a federated and privacy-protecting login system for the whole Web

● decentralised● simple

cross-browser

ideal web-wide identity system

Page 43: Persona: a federated and privacy-protecting login system for the whole Web

what if it were a standardpart of the web browser?

Page 44: Persona: a federated and privacy-protecting login system for the whole Web
Page 45: Persona: a federated and privacy-protecting login system for the whole Web

how does it work?

Page 47: Persona: a federated and privacy-protecting login system for the whole Web

why email addresses?

Page 48: Persona: a federated and privacy-protecting login system for the whole Web

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

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

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

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

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

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 55: Persona: a federated and privacy-protecting login system for the whole Web

demo #1:

http://www.voo.st/

[email protected]

Page 56: Persona: a federated and privacy-protecting login system for the whole Web

Persona is already adecentralised system

Page 57: Persona: a federated and privacy-protecting login system for the whole Web

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

we can't wait for all domainsto adopt Persona

Page 59: Persona: a federated and privacy-protecting login system for the whole Web

we can't wait for all domainsto adopt Persona

solution: a temporarycentralised fallback

Page 60: Persona: a federated and privacy-protecting login system for the whole Web

demo #2:

http://sloblog.io/

[email protected]

Page 61: Persona: a federated and privacy-protecting login system for the whole Web

Persona already workswith all email domains

Page 62: Persona: a federated and privacy-protecting login system for the whole Web

identity bridging

Page 63: Persona: a federated and privacy-protecting login system for the whole Web

demo #3:

http://www.reasonwell.com/

[email protected]

Page 64: Persona: a federated and privacy-protecting login system for the whole Web
Page 65: Persona: a federated and privacy-protecting login system for the whole Web
Page 66: Persona: a federated and privacy-protecting login system for the whole Web
Page 67: Persona: a federated and privacy-protecting login system for the whole Web

Persona supportsall modern browsers

>= 8

Page 68: Persona: a federated and privacy-protecting login system for the whole Web

Persona is decentralised,simple and cross-browser

Page 69: Persona: a federated and privacy-protecting login system for the whole Web

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
Page 71: Persona: a federated and privacy-protecting login system for the whole Web

<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

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

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

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

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

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
Page 78: Persona: a federated and privacy-protecting login system for the whole Web

navigator.id.request()

Page 79: Persona: a federated and privacy-protecting login system for the whole Web
Page 80: Persona: a federated and privacy-protecting login system for the whole Web
Page 81: Persona: a federated and privacy-protecting login system for the whole Web
Page 82: Persona: a federated and privacy-protecting login system for the whole Web

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

eyJhbGciOiJEUzEyOCJ9.eyJwdWJsaWMta2V5Ijp7ImFsZ29yaXRobSI6IkRTIiwieSI6ImNhZDg2ZDgyNWU0MjBkMGI4Njk5MjM4ZDM5ZTFjYjIyOGMyMTk1NWFiMzcwOTQ1YzExNzBhMzM4NjcyNDM0ZDJmNGYxZDg5ZjFkZjMzNmU1ZjZjZjk2YjhiOTlmMjgyNmFjNTYxZmI1YWMyYTc4ZjNhMzBkNGYxNTVhYjc3ZGExYmY3MWU4ZGMzNjQ0MmU2NjQ3MmE5Mjg0N2I2YjFlNDRkMTJlM2IwMjVjOWZmNTFmNDdhMWE5ZWYyMGZhOTVjMTcxZjBkMTYzNGE4ZTY4YTk5NWU3ZjFjY2FiYTJlOTRjYTI3ODE1ZWVkMTcxYjY1YTJmZGQzNTE1NjY3OTI0ZjUiLCJwIjoiZmY2MDA0ODNkYjZhYmZjNWI0NWVhYjc4NTk0YjM1MzNkNTUwZDlmMWJmMmE5OTJhN2E4ZGFhNmRjMzRmODA0NWFkNGU2ZTBjNDI5ZDMzNGVlZWFhZWZkN2UyM2Q0ODEwYmUwMGU0Y2MxNDkyY2JhMzI1YmE4MWZmMmQ1YTViMzA1YThkMTdlYjNiZjRhMDZhMzQ5ZDM5MmUwMGQzMjk3NDRhNTE3OTM4MDM0NGU4MmExOGM0NzkzMzQzOGY4OTFlMjJhZWVmODEyZDY5YzhmNzVlMzI2Y2I3MGVhMDAwYzNmNzc2ZGZkYmQ2MDQ2MzhjMmVmNzE3ZmMyNmQwMmUxNyIsInEiOiJlMjFlMDRmOTExZDFlZDc5OTEwMDhlY2FhYjNiZjc3NTk4NDMwOWMzIiwiZyI6ImM1MmE0YTBmZjNiN2U2MWZkZjE4NjdjZTg0MTM4MzY5YTYxNTRmNGFmYTkyOTY2ZTNjODI3ZTI1Y2ZhNmNmNTA4YjkwZTVkZTQxOWUxMzM3ZTA3YTJlOWUyYTNjZDVkZWE3MDRkMTc1ZjhlYmY2YWYzOTdkNjllMTEwYjk2YWZiMTdjN2EwMzI1OTMyOWU0ODI5YjBkMDNiYmM3ODk2YjE1YjRhZGU1M2UxMzA4NThjYzM0ZDk2MjY5YWE4OTA0MWY0MDkxMzZjNzI0MmEzODg5NWM5ZDViY2NhZDRmMzg5YWYxZDdhNGJkMTM5OGJkMDcyZGZmYTg5NjIzMzM5N2EifSwicHJpbmNpcGFsIjp7ImVtYWlsIjoiZm9vQG1vY2tteWlkLmNvbSJ9LCJpYXQiOjEzNzY1MzY0NjM1MTgsImV4cCI6MTM3NjU0MDA2MzUxOCwiaXNzIjoibW9ja215aWQuY29tIn0.IeUR0_3ayAZkdNSXjF4aaCwSHnHa4X1lzrjX-qkNcPIbXx1hmQQPwg~eyJhbGciOiJEUzEyOCJ9.eyJleHAiOjEzNzY1MzY3MDc2MzUsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QifQ.NJ8H1qZcWXbXfPJSdgB_mORHQ442ZkY0XYfdQsZZsIjooG7k7qWyVw

Page 84: Persona: a federated and privacy-protecting login system for the whole Web

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

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

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

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

{ 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

{ status: “failed”,

reason: “assertion has expired”}

Page 90: Persona: a federated and privacy-protecting login system for the whole Web
Page 91: Persona: a federated and privacy-protecting login system for the whole Web
Page 92: Persona: a federated and privacy-protecting login system for the whole Web

navigator.id.logout()

Page 93: Persona: a federated and privacy-protecting login system for the whole Web

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
Page 95: Persona: a federated and privacy-protecting login system for the whole Web

1. load javascript library

Page 96: Persona: a federated and privacy-protecting login system for the whole Web

1. load javascript library

2. setup login & logout callbacks

Page 97: Persona: a federated and privacy-protecting login system for the whole Web

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

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

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

you can add support forPersona in four easy steps

Page 101: Persona: a federated and privacy-protecting login system for the whole Web

one simple request

Page 102: Persona: a federated and privacy-protecting login system for the whole Web
Page 103: Persona: a federated and privacy-protecting login system for the whole Web

building a new site:default to Persona

Page 104: Persona: a federated and privacy-protecting login system for the whole Web

working on an existing site/app:add support for Persona

Page 105: Persona: a federated and privacy-protecting login system for the whole Web

before

Page 106: Persona: a federated and privacy-protecting login system for the whole Web

after

Page 107: Persona: a federated and privacy-protecting login system for the whole Web

after

navigator.id.request()

Page 108: Persona: a federated and privacy-protecting login system for the whole Web
Page 109: Persona: a federated and privacy-protecting login system for the whole Web

ALTER TABLE userDROP COLUMN password;

Page 110: Persona: a federated and privacy-protecting login system for the whole Web

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

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://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://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://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://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

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

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

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

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

© 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:


Recommended