the web beyond "usernames & passwords" (osdc12)

102
François Marier – @fmarier The Web beyond “Usernames & Passwords”

Upload: francois-marier

Post on 08-May-2015

313 views

Category:

Technology


4 download

DESCRIPTION

Identity systems on the Web are a bit of a mess. Surely in 2012, we would have something else than usernames and passwords for logging into websites. A solution that doesn't require trusting a central authority with a privacy policy that can change at a whim. It turns out that solving the general identity problem is very hard. Some of these solutions require complicated redirections, an overwhelming amount of jargon and lots of verbose XML. The technology has been around for a long time, but implementing it properly (and safely) is often incredibly difficult. It's a lot to ask of the millions of part-time developers out there that are building sites out of some quick HTML, a MySQL database and some PHP Code samples. This talk will explore the challenges of the existing Web identity solutions and introduce the choices that we made during the development of Persona, a new Open Source federated identity solution from Mozilla, designed and built to respect user privacy.

TRANSCRIPT

Page 1: The Web beyond "usernames & passwords" (OSDC12)

François Marier – @fmarier

T h e W e b b e y o n d“Usernames & Passwords”

Page 2: The Web beyond "usernames & passwords" (OSDC12)

Username:francois

Password:****************

X

Sign in

Page 3: The Web beyond "usernames & passwords" (OSDC12)

security

Page 4: The Web beyond "usernames & passwords" (OSDC12)
Page 5: The Web beyond "usernames & passwords" (OSDC12)
Page 6: The Web beyond "usernames & passwords" (OSDC12)
Page 7: The Web beyond "usernames & passwords" (OSDC12)
Page 8: The Web beyond "usernames & passwords" (OSDC12)
Page 9: The Web beyond "usernames & passwords" (OSDC12)
Page 10: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

Page 11: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

per-user salt

Page 12: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

per-user salt

site secret

Page 13: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

per-user salt

site secret

password & lockout policies

Page 14: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

per-user salt

site secret

password & lockout policies

secure recovery

Page 15: The Web beyond "usernames & passwords" (OSDC12)

bcrypt

per-user salt

site secret

password & lockout policies

secure recovery

20122012

passwordpassword

guidelines

guidelines

Page 16: The Web beyond "usernames & passwords" (OSDC12)
Page 17: The Web beyond "usernames & passwords" (OSDC12)

conversionrate

Page 18: The Web beyond "usernames & passwords" (OSDC12)

# hits

signup

Page 19: The Web beyond "usernames & passwords" (OSDC12)

# hits

signup signup_complete

Page 20: The Web beyond "usernames & passwords" (OSDC12)

# hits

signup signup_complete

l o s t cust-omers

Page 21: The Web beyond "usernames & passwords" (OSDC12)

existing solutions

Page 22: The Web beyond "usernames & passwords" (OSDC12)

client certificates

Page 23: The Web beyond "usernames & passwords" (OSDC12)

centralized authorities

Page 24: The Web beyond "usernames & passwords" (OSDC12)
Page 25: The Web beyond "usernames & passwords" (OSDC12)

so...

storing passwords is hard

Page 26: The Web beyond "usernames & passwords" (OSDC12)

so...

storing passwords is hard

no suitable alternatives

Page 27: The Web beyond "usernames & passwords" (OSDC12)
Page 28: The Web beyond "usernames & passwords" (OSDC12)

decentralized

Page 29: The Web beyond "usernames & passwords" (OSDC12)

privacy-sensitivedecentralized

Page 30: The Web beyond "usernames & passwords" (OSDC12)

privacy-sensitive

simple

decentralized

Page 31: The Web beyond "usernames & passwords" (OSDC12)

privacy-sensitive

simpleopen source

decentralized

Page 32: The Web beyond "usernames & passwords" (OSDC12)

in your browser

Page 33: The Web beyond "usernames & passwords" (OSDC12)

how does it work?

Page 35: The Web beyond "usernames & passwords" (OSDC12)

getting a proof of email ownership

Page 36: The Web beyond "usernames & passwords" (OSDC12)

authenticate?

Page 37: The Web beyond "usernames & passwords" (OSDC12)

authenticate?

public key

Page 38: The Web beyond "usernames & passwords" (OSDC12)

authenticate?

public key

signed public key

Page 39: The Web beyond "usernames & passwords" (OSDC12)

you have a signed statement from yourprovider that you own your email address

Page 40: The Web beyond "usernames & passwords" (OSDC12)
Page 41: The Web beyond "usernames & passwords" (OSDC12)
Page 42: The Web beyond "usernames & passwords" (OSDC12)
Page 43: The Web beyond "usernames & passwords" (OSDC12)
Page 44: The Web beyond "usernames & passwords" (OSDC12)
Page 45: The Web beyond "usernames & passwords" (OSDC12)
Page 46: The Web beyond "usernames & passwords" (OSDC12)
Page 47: The Web beyond "usernames & passwords" (OSDC12)

logging into a 3rd party site

Page 48: The Web beyond "usernames & passwords" (OSDC12)

Valid for: 2 minutes

wikipedia.org

assertion

Page 49: The Web beyond "usernames & passwords" (OSDC12)

Valid for: 2 minutes

wikipedia.org

check audience

assertion

Page 50: The Web beyond "usernames & passwords" (OSDC12)

Valid for: 2 minutes

wikipedia.org

check audiencecheck expiry

assertion

Page 51: The Web beyond "usernames & passwords" (OSDC12)

Valid for: 2 minutes

wikipedia.org

check audiencecheck expirycheck signature

assertion

Page 52: The Web beyond "usernames & passwords" (OSDC12)

assertion

Valid for: 2 minutes

wikipedia.org

public key

Page 53: The Web beyond "usernames & passwords" (OSDC12)

assertion

Valid for: 2 minutes

wikipedia.org

Page 54: The Web beyond "usernames & passwords" (OSDC12)

assertion

session cookie

Page 55: The Web beyond "usernames & passwords" (OSDC12)

achievingthat vision

Page 56: The Web beyond "usernames & passwords" (OSDC12)
Page 57: The Web beyond "usernames & passwords" (OSDC12)

email providers

browser vendors

Page 58: The Web beyond "usernames & passwords" (OSDC12)

email providers

Page 61: The Web beyond "usernames & passwords" (OSDC12)
Page 62: The Web beyond "usernames & passwords" (OSDC12)
Page 63: The Web beyond "usernames & passwords" (OSDC12)
Page 64: The Web beyond "usernames & passwords" (OSDC12)

support for all email providers

Page 65: The Web beyond "usernames & passwords" (OSDC12)

browser vendors

Page 66: The Web beyond "usernames & passwords" (OSDC12)

navigator.id.*

Page 67: The Web beyond "usernames & passwords" (OSDC12)

js

Page 68: The Web beyond "usernames & passwords" (OSDC12)

support for allmodern browsers

>= 8

Page 69: The Web beyond "usernames & passwords" (OSDC12)

support for allmodern browsers

>= 8

Page 70: The Web beyond "usernames & passwords" (OSDC12)

using it on your site

Page 71: The Web beyond "usernames & passwords" (OSDC12)
Page 72: The Web beyond "usernames & passwords" (OSDC12)

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

Page 73: The Web beyond "usernames & passwords" (OSDC12)

navigator.id.watch({ loggedInEmail: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});

Page 74: The Web beyond "usernames & passwords" (OSDC12)

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

Page 75: The Web beyond "usernames & passwords" (OSDC12)

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

Page 76: The Web beyond "usernames & passwords" (OSDC12)

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

Page 77: The Web beyond "usernames & passwords" (OSDC12)

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

Page 78: The Web beyond "usernames & passwords" (OSDC12)
Page 79: The Web beyond "usernames & passwords" (OSDC12)

navigator.id.request()

Page 80: The Web beyond "usernames & passwords" (OSDC12)
Page 81: The Web beyond "usernames & passwords" (OSDC12)
Page 82: The Web beyond "usernames & passwords" (OSDC12)
Page 83: The Web beyond "usernames & passwords" (OSDC12)

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

Page 84: The Web beyond "usernames & passwords" (OSDC12)

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

Page 85: The Web beyond "usernames & passwords" (OSDC12)

$ curl -d "assertion=<ASSERTION>& audience=http://123done.org" https://verifier.login.persona.org/verify

Page 86: The Web beyond "usernames & passwords" (OSDC12)

$ curl -d "assertion=<ASSERTION>& audience=http://123done.org" https://verifier.login.persona.org/verify

Page 87: The Web beyond "usernames & passwords" (OSDC12)

{ status: “okay”,

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

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 88: The Web beyond "usernames & passwords" (OSDC12)

{ status: “failed”,

reason: “assertion has expired”}

Page 89: The Web beyond "usernames & passwords" (OSDC12)
Page 90: The Web beyond "usernames & passwords" (OSDC12)
Page 91: The Web beyond "usernames & passwords" (OSDC12)
Page 92: The Web beyond "usernames & passwords" (OSDC12)

navigator.id.logout()

Page 93: The Web beyond "usernames & passwords" (OSDC12)

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

Page 94: The Web beyond "usernames & passwords" (OSDC12)
Page 95: The Web beyond "usernames & passwords" (OSDC12)

1. load javascript library

Page 96: The Web beyond "usernames & passwords" (OSDC12)

1. load javascript library

2. setup login & logout callbacks

Page 97: The Web beyond "usernames & passwords" (OSDC12)

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

Page 98: The Web beyond "usernames & passwords" (OSDC12)

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 99: The Web beyond "usernames & passwords" (OSDC12)

play with Personaon your site

tell us about yourexperience

email one siteasking for it

Page 100: The Web beyond "usernames & passwords" (OSDC12)

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 101: The Web beyond "usernames & passwords" (OSDC12)

© 2012 François Marier <[email protected]>This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 New Zealand License.

Top 500 passwords: http://xato.net/passwords/more-top-worst-passwords/

Parchment: https://secure.flickr.com/photos/27613359@N03/6750396225/

Elephant in room: https://secure.flickr.com/photos/bitboy/246805948/

Cookie on tray: https://secure.flickr.com/photos/jamisonjudd/4810986199/

Uncle Sam: https://secure.flickr.com/photos/donkeyhotey/5666065982/

Photo credits: