taking the pain out of signing users in

95
François Marier – @fmarier Taking the pain out of signing users in

Upload: francois-marier

Post on 08-May-2015

678 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Taking the pain out of signing users in

François Marier – @fmarier

Taking the pain out ofsigning users in

Page 2: Taking the pain out of signing users in

passwords

Page 3: Taking the pain out of signing users in

problem #1:

passwords are hard to secure

Page 4: Taking the pain out of signing users in
Page 5: Taking the pain out of signing users in
Page 6: Taking the pain out of signing users in
Page 7: Taking the pain out of signing users in
Page 8: Taking the pain out of signing users in
Page 9: Taking the pain out of signing users in
Page 10: Taking the pain out of signing users in
Page 11: Taking the pain out of signing users in
Page 12: Taking the pain out of signing users in
Page 13: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 14: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 15: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 16: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 17: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 18: Taking the pain out of signing users in

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

20132013

passwordpassword

guidelines

guidelines

Page 19: Taking the pain out of signing users in

passwords are hard to secure

they are a liability

Page 20: Taking the pain out of signing users in

ALTER TABLE userDROP COLUMN password;

Page 21: Taking the pain out of signing users in

problem #2:

passwords are hard to remember

Page 22: Taking the pain out of signing users in
Page 23: Taking the pain out of signing users in
Page 24: Taking the pain out of signing users in

pick an easy password

Page 25: Taking the pain out of signing users in

use it everywhere

Page 26: Taking the pain out of signing users in

passwords are hard to remember

they need to be reset

Page 27: Taking the pain out of signing users in
Page 28: Taking the pain out of signing users in

controlemail

account

controlall

accounts=

Page 29: Taking the pain out of signing users in
Page 30: Taking the pain out of signing users in

“People want a littledating before marriage.”

Eric Vishria – Rockmelt

Page 31: Taking the pain out of signing users in
Page 32: Taking the pain out of signing users in

decentralised

Page 33: Taking the pain out of signing users in

myid.com/u/francois

Page 34: Taking the pain out of signing users in
Page 35: Taking the pain out of signing users in
Page 36: Taking the pain out of signing users in

existing login systemsare not good enough

Page 37: Taking the pain out of signing users in

ideal web-wide identity system

Page 38: Taking the pain out of signing users in

● decentralised

simple

cross-browser

ideal web-wide identity system

Page 39: Taking the pain out of signing users in

● decentralised● simple

cross-browser

ideal web-wide identity system

Page 40: Taking the pain out of signing users in

● decentralised● simple● cross-browser

ideal web-wide identity system

Page 41: Taking the pain out of signing users in

what if it were a standardpart of the web browser?

Page 42: Taking the pain out of signing users in
Page 43: Taking the pain out of signing users in

how does it work?

Page 45: Taking the pain out of signing users in

demo #1:

http://www.voo.st/

[email protected]

Page 46: Taking the pain out of signing users in

Persona is already adecentralised system

Page 47: Taking the pain out of signing users in

decentralisation is the answer, but it's not

a product adoption strategy

Page 48: Taking the pain out of signing users in

we can't wait for all domainsto adopt Persona

Page 49: Taking the pain out of signing users in

we can't wait for all domainsto adopt Persona

solution: a temporarycentralised fallback

Page 50: Taking the pain out of signing users in

demo #2:

http://sloblog.io/

[email protected]

Page 51: Taking the pain out of signing users in

Persona already workswith all email domains

Page 52: Taking the pain out of signing users in

identity bridging

Page 53: Taking the pain out of signing users in

demo #3:

http://www.reasonwell.com/

[email protected]

Page 54: Taking the pain out of signing users in
Page 55: Taking the pain out of signing users in
Page 56: Taking the pain out of signing users in
Page 57: Taking the pain out of signing users in
Page 58: Taking the pain out of signing users in

>= 8

Page 59: Taking the pain out of signing users in

Persona is decentralized,simple and cross-browser

Page 60: Taking the pain out of signing users in

it's simple for users, but is it also

simple for developers?

Page 61: Taking the pain out of signing users in
Page 62: Taking the pain out of signing users in

<script src=”https://login.persona.org/include.js”></script></body></html>

Page 63: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 64: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: "[email protected]" onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 65: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 66: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); } onlogout: function () { window.location = '/logout'; }});

Page 67: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 68: Taking the pain out of signing users in
Page 69: Taking the pain out of signing users in

navigator.id.request()

Page 70: Taking the pain out of signing users in
Page 71: Taking the pain out of signing users in
Page 72: Taking the pain out of signing users in
Page 73: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 74: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 75: Taking the pain out of signing users in

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 76: Taking the pain out of signing users in

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 77: Taking the pain out of signing users in

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 78: Taking the pain out of signing users in

{ status: “okay”,

audience: “http://123done.org”,

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 79: Taking the pain out of signing users in

{ status: “failed”,

reason: “assertion has expired”

}

Page 80: Taking the pain out of signing users in
Page 81: Taking the pain out of signing users in
Page 82: Taking the pain out of signing users in

navigator.id.logout()

Page 83: Taking the pain out of signing users in

navigator.id.watch({ loggedInUser: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 84: Taking the pain out of signing users in
Page 85: Taking the pain out of signing users in

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 86: Taking the pain out of signing users in

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 87: Taking the pain out of signing users in

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 88: Taking the pain out of signing users in

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 89: Taking the pain out of signing users in

you can add support forPersona in four easy steps

Page 90: Taking the pain out of signing users in

one simple request

Page 91: Taking the pain out of signing users in
Page 92: Taking the pain out of signing users in

building a new site:default to Persona

Page 93: Taking the pain out of signing users in

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

Page 94: Taking the pain out of signing users in

To learn more about Persona:

https://login.persona.org/http://identity.mozilla.com/

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

Page 95: Taking the pain out of signing users in

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