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

Building the Social Web with OpenID

Embed Size (px)

DESCRIPTION

Slides from my keynote at PyCon UK 2007.

Citation preview

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?