building the social web with openid

146
Building the Social Web with Simon Willison PyCon UK, 8th September 2007

Upload: simon-willison

Post on 28-Jan-2015

113 views

Category:

Technology


0 download

DESCRIPTION

Slides from my keynote at PyCon UK 2007.

TRANSCRIPT

Page 1: Building the Social Web with OpenID

Building theSocial Web with

Simon WillisonPyCon UK, 8th September 2007

Page 2: Building the Social Web with OpenID

?Who here has used OpenID?

Page 3: Building the Social Web with OpenID

?Who uses it regularly?

Page 4: Building the Social Web with OpenID

Four problems

• Usernames and passwords suck

• Signing up for new accounts is a pain

• My online identity exists in dozens of different places

• Social software suffers from too much overhead

Page 5: Building the Social Web with OpenID

Four problems

• Usernames and passwords suck

• Signing up for new accounts is a pain

• My online identity exists in dozens of different places

• Social software suffers from too much overhead

(and their OpenID related solutions)

Page 6: Building the Social Web with OpenID

Usernames and passwords suck

Page 7: Building the Social Web with OpenID
Page 8: Building the Social Web with OpenID

We want to make you aware that media of ours that contained a backup of a portion of the reddit

database was stolen recently [...] we wanted to alert you to the possibility that your username, password, and -- in some cases -- e-mail address

may have been compromised.

Steve Huffman, reddit.com

Page 9: Building the Social Web with OpenID

• Don’t store plaintext passwords in your application’s database

• Don’t use the same password on more than one site!

Two lessons

Page 10: Building the Social Web with OpenID
Page 11: Building the Social Web with OpenID

The Web needsSingle Sign On

Page 12: Building the Social Web with OpenID

?

Page 13: Building the Social Web with OpenID

SSO with a single controlling authoritybetrays the principles

of the Web

Page 14: Building the Social Web with OpenID

OpenID is a decentralised mechanism

for Single Sign On

Page 15: Building the Social Web with OpenID

An OpenID is a URL

Page 16: Building the Social Web with OpenID

http://swillison.livejournal.com/

Page 17: Building the Social Web with OpenID

http://simonw.myopenid.com/

Page 18: Building the Social Web with OpenID

http://simonwillison.net/

Page 20: Building the Social Web with OpenID

The OpenID protocol lets you prove that you

own a specific URL

Page 21: Building the Social Web with OpenID

An OpenID can be used as an authentication credential

Page 22: Building the Social Web with OpenID

“Who the heck are you?!”

Page 23: Building the Social Web with OpenID

“I’m simonwillison.net”

Page 24: Building the Social Web with OpenID

“prove it!”

Page 25: Building the Social Web with OpenID

(magic happens)

Page 26: Building the Social Web with OpenID

“OK, you’re in!”

Page 27: Building the Social Web with OpenID

Picking an OpenID is like picking an e-mail

provider - you find one that you trust

Page 28: Building the Social Web with OpenID

If you have the ability to run your own server

software, you can do it for yourself

Page 30: Building the Social Web with OpenID

?So how do I use it?

Page 31: Building the Social Web with OpenID
Page 32: Building the Social Web with OpenID
Page 33: Building the Social Web with OpenID
Page 34: Building the Social Web with OpenID
Page 35: Building the Social Web with OpenID

?So my users don’thave to sign up for an

account?

Page 36: Building the Social Web with OpenID

Not necessarily

Page 37: Building the Social Web with OpenID

An OpenID tells youvery little about a user

Page 38: Building the Social Web with OpenID

You don’t knowtheir name

Page 39: Building the Social Web with OpenID

You don’t knowtheir e-mail address

Page 40: Building the Social Web with OpenID

You don’t knowif they’re a personor an evil robot

Page 41: Building the Social Web with OpenID

?Where do I get that information from?

Page 42: Building the Social Web with OpenID

You ask them!

Page 43: Building the Social Web with OpenID

OpenID can help them answer

Page 44: Building the Social Web with OpenID
Page 45: Building the Social Web with OpenID
Page 46: Building the Social Web with OpenID

?So how does OpenIDactually work?

Page 47: Building the Social Web with OpenID
Page 48: Building the Social Web with OpenID
Page 49: Building the Social Web with OpenID

<link rel="openid.server" href="http://www.myopenid.com/server" />

Page 50: Building the Social Web with OpenID

“I’m simonwillison.myopenid.com”

Page 51: Building the Social Web with OpenID

Site fetches HTML,discovers identity provider

Page 52: Building the Social Web with OpenID

Establishes shared secretwith identity provider

(Using Diffie-Hellman key exchange)

Page 53: Building the Social Web with OpenID

Redirects you to the identity provider

Page 54: Building the Social Web with OpenID

If you’re logged in there, you get redirected back

Page 55: Building the Social Web with OpenID

?How does my identityprovider know who I am?

Page 56: Building the Social Web with OpenID

OpenID deliberately doesn’t specify

Page 57: Building the Social Web with OpenID

username/passwordis common

Page 58: Building the Social Web with OpenID

But providers can use other methods if

they want to

Page 59: Building the Social Web with OpenID

Client SSL certificates

Page 60: Building the Social Web with OpenID

Out of band authentication via SMS,

e-mail or Jabber

Page 61: Building the Social Web with OpenID

SecurID keyfobs

Page 62: Building the Social Web with OpenID

No authentication at all (just say “Yes”)

Page 63: Building the Social Web with OpenID

?Just say “yes”?

Page 64: Building the Social Web with OpenID

Yup. That’s the OpenID version of bugmenot.com

Page 65: Building the Social Web with OpenID

http://www.jkg.in/openid/

Page 66: Building the Social Web with OpenID

Users can give away their passwords today - this is just the OpenID

equivalent

Page 67: Building the Social Web with OpenID

?What if I decide I hate my provider?

Page 68: Building the Social Web with OpenID

Use your owndomain name

Page 69: Building the Social Web with OpenID

Delegate to a provider you trust

Page 70: Building the Social Web with OpenID
Page 71: Building the Social Web with OpenID
Page 72: Building the Social Web with OpenID

<link rel="openid.server" href="http://www.livejournal.com/openid/server.bml"><link rel="openid.delegate" href="http://swillison.livejournal.com/">

Page 73: Building the Social Web with OpenID

Support for delegation is compulsory

Page 74: Building the Social Web with OpenID

This minimises lock in

Page 75: Building the Social Web with OpenID

?So everyone will end upwith one OpenID that

they use for everything?

Page 76: Building the Social Web with OpenID

Probably not

Page 77: Building the Social Web with OpenID

(I have half a dozen OpenIDs already)

Page 78: Building the Social Web with OpenID

People like maintaining multiple online personas

Page 79: Building the Social Web with OpenID

professionalsocialsecret

...

Page 80: Building the Social Web with OpenID

OpenID makes it easier to manage multiple

online personas

Page 81: Building the Social Web with OpenID

Three accounts is still better than three dozen

Page 82: Building the Social Web with OpenID

?If an OpenID is a URL, is there anything else interesting

you can do with it?

Page 83: Building the Social Web with OpenID

Yes. Different OpenIDs can express different things

Page 84: Building the Social Web with OpenID

My AOL OpenID proves my AIM screen name

Page 85: Building the Social Web with OpenID

An OpenID from sun.com proves that someone is a current

Sun employee

Page 86: Building the Social Web with OpenID

A last.fm OpenIDcould incorporatemy taste in music

Page 87: Building the Social Web with OpenID

My LiveJournal OpenID tells you where to find

my blog

Page 88: Building the Social Web with OpenID

OpenID and web service APIs naturally

complement each other

Page 89: Building the Social Web with OpenID

?What about phishing?

Page 90: Building the Social Web with OpenID

Phishing is a problem

Page 91: Building the Social Web with OpenID

I can has lolcats!? BETA

Make your own lolcats! lol

Sign in with your OpenID:

OpenID: Sign in

http://icanhascheezburger.com/2007/05/16/i-has-a-backpack/

Page 92: Building the Social Web with OpenID

Fake edition

Username and password, please!

Your identity provider

Username:

Password:Log in

Page 93: Building the Social Web with OpenID

Identity theft :(

Page 94: Building the Social Web with OpenID

An untrusted site redirects you to your

trusted provider

Page 95: Building the Social Web with OpenID

Sound familiar?

Page 96: Building the Social Web with OpenID

PayPalYahoo! BBAuthGoogle Auth

Google Checkout

Page 97: Building the Social Web with OpenID

One solution: don’t let the user log in on the

identity provider “landing page”

Page 98: Building the Social Web with OpenID
Page 99: Building the Social Web with OpenID

Better solutions

Page 100: Building the Social Web with OpenID

CardSpace

Page 101: Building the Social Web with OpenID

Native browsersupport for OpenID(Firefox 3, Seatbelt)

Page 102: Building the Social Web with OpenID
Page 103: Building the Social Web with OpenID

Competition between providers

Page 104: Building the Social Web with OpenID

?Doesn’t this outsource the security of my users to untrusted third parties?

Page 105: Building the Social Web with OpenID

Yes it does. But...

Page 106: Building the Social Web with OpenID

... so do “forgotten password” e-mails!

Page 107: Building the Social Web with OpenID

If e-mail is secure enough for your user’s

authentication, so is OpenID

Page 108: Building the Social Web with OpenID

Password e-mails are just SSO with an

unavoidably bad user experience

Page 109: Building the Social Web with OpenID

?Best practices for OpenID consumers?

Page 110: Building the Social Web with OpenID
Page 111: Building the Social Web with OpenID

“I forgot my password” becomes “I can’t sign in

with my OpenID”

Page 112: Building the Social Web with OpenID

Allow multiple OpenIDs to be associated with a

single account

Page 113: Building the Social Web with OpenID

People can still signin if one of their

providers is down

Page 114: Building the Social Web with OpenID

People can un-associate an OpenID without

locking themselves out

Page 115: Building the Social Web with OpenID

You can take advantage of site-specific services around each of their

OpenIDs

Page 116: Building the Social Web with OpenID

?What are the privacy implications?

Page 117: Building the Social Web with OpenID

Cross correlation of accounts

Page 118: Building the Social Web with OpenID

Don’t publish a user’s OpenID without making it clear that you’re going

to do that

Page 119: Building the Social Web with OpenID

Allow users to opt-out of sharing their OpenID

Page 120: Building the Social Web with OpenID

?Any other neat tricks?

Page 121: Building the Social Web with OpenID

My online identity exists in dozens of different places

Page 122: Building the Social Web with OpenID
Page 123: Building the Social Web with OpenID

I can use OpenID to tie these profiles together

Page 124: Building the Social Web with OpenID

Portable contact lists

Page 125: Building the Social Web with OpenID

Facebook (and others) currently ask for the

user’s webmail username and password

Page 126: Building the Social Web with OpenID

Lightweight accounts

Page 127: Building the Social Web with OpenID

Pre-approved accounts

Page 128: Building the Social Web with OpenID

Social whitelists

Page 129: Building the Social Web with OpenID

OpenID and microformats

Page 130: Building the Social Web with OpenID

Identity projection

Page 131: Building the Social Web with OpenID

Decentralised social networks

Page 132: Building the Social Web with OpenID

“People keep asking me to join the LinkedIn network, but I’m already part of a network, it’s

called the Internet.”Gary McGraw, via Jon Udell, via Gavin Bell

Page 133: Building the Social Web with OpenID

An open alternative?

Page 134: Building the Social Web with OpenID

?Who else is involved?

Page 135: Building the Social Web with OpenID

Total Relying Parties

0

875

1,750

2,625

3,500

Sep '

05 Oct

Nov Dec

Jan '0

6Fe

bMar Apr May

June

July

Aug Sep

Oct

Nov Dec

Jan '0

7Fe

bMar Apr May

June

Page 136: Building the Social Web with OpenID
Page 137: Building the Social Web with OpenID

?How do I build it in to my Python application?

Page 138: Building the Social Web with OpenID

Open Source libraries from JanRain

Page 139: Building the Social Web with OpenID
Page 140: Building the Social Web with OpenID
Page 141: Building the Social Web with OpenID
Page 142: Building the Social Web with OpenID
Page 143: Building the Social Web with OpenID

OpenID

Smart hackers needed

Page 145: Building the Social Web with OpenID

Thank you

Page 146: Building the Social Web with OpenID

Questions?