Download - OAuth FTW

Transcript
Page 1: OAuth FTW

OAuth FTW

Chris MessinaFuture of Web Apps

October 10, 2008London, England

How OAuth and portable data can revolutionize your web app

(FOR THE WIN)

Page 2: OAuth FTW

OAuth |ō| |ôˌθ|Noun.

An open protocol that allows secure API authorization in a simple and standard method from desktop, web and mobile applications.

Page 3: OAuth FTW

The story of OAuth starts with OpenID.

Page 4: OAuth FTW

factoryjoe.com

Page 5: OAuth FTW

?!X

factoryjoe.com

Page 6: OAuth FTW

!

Page 7: OAuth FTW

Can has OpenID?

? X

factoryjoe.com

Page 8: OAuth FTW

B-b-but what about API apps?

X

(APPLICATION PROGRAMMING INTERFACE)

Page 9: OAuth FTW
Page 10: OAuth FTW

?

Page 11: OAuth FTW

!?!

Page 12: OAuth FTW

How much are your username and password worth?

Page 13: OAuth FTW

wayn.com

Page 14: OAuth FTW
Page 15: OAuth FTW

imeem.com

Page 16: OAuth FTW
Page 17: OAuth FTW
Page 18: OAuth FTW

PC Load Letter?! What the f...!

Page 19: OAuth FTW

The Password Anti-pattern!

Page 20: OAuth FTW

Passwords are not confetti.

Page 21: OAuth FTW

Please stop throwing them around.

Page 22: OAuth FTW

Especially if they’re not yours.

Page 23: OAuth FTW

OAuth replaces the need for usernames and passwords with tokens and a hashing signature.

Page 24: OAuth FTW

let’s take a look

Page 25: OAuth FTW

Brightkite > pings Fire Eagle for Request Token

Fire Eagle > returns authorization realm

Page 26: OAuth FTW

Brightkite > requests that user authorize Brightkite

Fire Eagle > user authenticates through Yahoo! accounts

Page 27: OAuth FTW

Fire Eagle > user grants authorization to Brightkite

Fire Eagle > Fire Eagle redirects user to callback URL

Page 28: OAuth FTW

Brightkite > asks FE to exchange Request Token for Access Token

Fire Eagle > checks signature; if valid, returns Access Token

...subsequent requests are signed with this Access Token

Page 29: OAuth FTW

users can manage access...

Page 30: OAuth FTW

...and change access

Page 31: OAuth FTW

or can revoke access later without having to change their primary account password

(i.e. if they lose their phone or their computer gets stolen)

Page 32: OAuth FTW

?

Page 33: OAuth FTW

discovery

Page 34: OAuth FTW

Identity -› Discovery -› Authorization

Page 35: OAuth FTW

OpenID -› XRDS-Simple -› OAuth Endpoint

(EXTENSIBLE RESOURCE IDENTIFIER RESOLUTION)

Page 36: OAuth FTW

Identity -› Discovery -› [Authentication] -› Authorization

Page 37: OAuth FTW

http://will.norris.name

☟<meta http-equiv="X-XRDS-Location" content="http://will.norris.name/?xrds" />

Page 38: OAuth FTW

OpenID XRDS

<?xml version="1.0" encoding="UTF-8"?><xrds:XRDS xmlns:xrds="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0" xmlns="xri://$xrd*($v*2.0)"> <XRD> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/phishing-resistant</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/multi-factor</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/multi-factor-physical</Type> <URI>https://pip.verisignlabs.com/server</URI> <LocalID>https://recordond.pip.verisignlabs.com/</LocalID> </Service> </XRD></xrds:XRDS>

Page 39: OAuth FTW

XRDS-Simple for Portable Contacts

<?xml version="1.0" encoding="UTF-8"?><xrds:XRDS xmlns:xrds="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0" xmlns="xri://$xrd*($v*2.0)"> <XRD version="2.0"> <Type>xri://$xrds*simple</Type> <Service> <Type>http://portablecontacts.net/spec/1.0</Type> <URI>http://pulse.plaxo.com/pulse/pdata/contacts</URI> </Service> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/phishing-resistant</Type> <Type>http://openid.net/srv/ax/1.0</Type> <URI>http://www.myopenid.com/server</URI> <LocalID>http://brian.myopenid.com/</LocalID> </Service> </XRD></xrds:XRDS>

Page 40: OAuth FTW

XRDS-Simple for Portable Contacts

<XRD version="2.0"> <Type>xri://$xrds*simple</Type> <Service> <Type>http://portablecontacts.net/spec/1.0</Type> <URI>http://pulse.plaxo.com/pulse/pdata/contacts</URI> </Service> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/... <Type>http://openid.net/srv/ax/1.0</Type>

...

Page 41: OAuth FTW

XRDS-Simple for Portable Contacts

<XRD version="2.0"> <Type>xri://$xrds*simple</Type> <Service> <Type>http://portablecontacts.net/spec/1.0</Type> <URI>http://soocial.com/contacts.xml</URI> </Service> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/... <Type>http://openid.net/srv/ax/1.0</Type>

...

Page 42: OAuth FTW

adoption

Page 43: OAuth FTW

•OpenSocial

•MySpace

•Google

•Yahoo! (Fire Eagle)

•Netflix

•SmugMug

•Photobucket

•Plaxo

•Soocial.com

•Meetup.com

•Ma.gnolia

•Get Satisfaction

•Agree2

•SoundCloud

•88Miles

•Pownce

•Brightkite

•Praized

http://wiki.oauth.net/ServiceProviders

Page 44: OAuth FTW

code

Page 45: OAuth FTW

•C#

•Coldfusion

•Java

•Javascript

•Jifty

•.NET

•Objective-C

•OCaml

•Perl

•PHP

•CakePHP

•Python

•Ruby

•...interest in XMPP

http://oauth.net/code

Page 46: OAuth FTW

the pitch

Page 47: OAuth FTW

fin.

oauth.netme -› factoryjoe.com