122
The Identity Problem of the Web and how to solve it Bastian Hofmann ResearchGate GmbH

The Identity Problem of the Web and how to solve it

Embed Size (px)

Citation preview

Page 1: The Identity Problem of the Web and how to solve it

The Identity Problem of the Web and how to solve it

Bastian HofmannResearchGate GmbH

Page 2: The Identity Problem of the Web and how to solve it
Page 3: The Identity Problem of the Web and how to solve it
Page 4: The Identity Problem of the Web and how to solve it
Page 5: The Identity Problem of the Web and how to solve it
Page 6: The Identity Problem of the Web and how to solve it
Page 7: The Identity Problem of the Web and how to solve it

Questions? Ask!

Page 9: The Identity Problem of the Web and how to solve it

Only one identity?

Page 10: The Identity Problem of the Web and how to solve it

Identity is conveyed by communication

Identity is not fixed but recreated by every communication with your fellows

Expectations of different people result in different identities

Lothar Krappmann

Page 12: The Identity Problem of the Web and how to solve it
Page 13: The Identity Problem of the Web and how to solve it
Page 14: The Identity Problem of the Web and how to solve it

Sign up again and again

Page 15: The Identity Problem of the Web and how to solve it

Passwords are broken

Same password for more than one service

Names, birthdays, car brand, ...

Too short, too simple

Saved unsecurely in the browser

Disclosed to others

Sent over non encrypted connections

Page 16: The Identity Problem of the Web and how to solve it

Single Sign On

Page 17: The Identity Problem of the Web and how to solve it

Microsoft Live ID

Launched 1999 as .net Passport

Page 18: The Identity Problem of the Web and how to solve it

Facebook Connect

Page 19: The Identity Problem of the Web and how to solve it
Page 20: The Identity Problem of the Web and how to solve it

And there are much more

Page 21: The Identity Problem of the Web and how to solve it

Nascar problem

Page 22: The Identity Problem of the Web and how to solve it

http://www.janrain.com/

Aggregation

Page 23: The Identity Problem of the Web and how to solve it

OpenID

http://openid.net/

Page 24: The Identity Problem of the Web and how to solve it

The Client

Page 25: The Identity Problem of the Web and how to solve it

http://bhofmann.myopenid.com

Page 26: The Identity Problem of the Web and how to solve it
Page 27: The Identity Problem of the Web and how to solve it

http://bhofmann.myopenid.com

Page 28: The Identity Problem of the Web and how to solve it

http://bhofmann.myopenid.comHTTP POST

stackoverflow.com

Page 30: The Identity Problem of the Web and how to solve it

http://bhofmann.myopenid.comHTTP POST

stackoverflow.com

bhofmann.myopenid.com

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

Page 31: The Identity Problem of the Web and how to solve it

http://bhofmann.myopenid.comHTTP POST

stackoverflow.com

myopenid.com/server

Establish shared secret(Diffie-Hellman)

Page 37: The Identity Problem of the Web and how to solve it

HTTP GET

stackoverflow.com

Verify assertion

Page 38: The Identity Problem of the Web and how to solve it

DEMO

http://stackoverflow.com/

https://www.myopenid.com/

Page 39: The Identity Problem of the Web and how to solve it

Who is the user?

Is this really user X?

Is X allowed to do something?

Does X have the permission?

VS

Client sites want more than just a unique identifier (Social Graph)

Authentication vs Authorization

Page 40: The Identity Problem of the Web and how to solve it

But there are Spec Extensions

Page 41: The Identity Problem of the Web and how to solve it

Additional parameters on the redirects

Page 42: The Identity Problem of the Web and how to solve it

Simple Registration

Page 43: The Identity Problem of the Web and how to solve it

openid.sreg.required=openid.sreg.fullname&openid.sreg.optional=openid.sreg.email,openid.sreg.gender

openid.sreg.fullname=Bastian&openid.sreg.gender=male

Page 44: The Identity Problem of the Web and how to solve it

Attribute Exchange

Page 45: The Identity Problem of the Web and how to solve it

penid.ns.ax=http://openid.net/srv/ax/1.0openid.ax.mode=fetch_requestopenid.ax.type.fname=http://example.com/schema/fullnameopenid.ax.type.gender=http://example.com/schema/genderopenid.ax.type.fav_dog=http://example.com/schema/favourite_dogopenid.ax.type.fav_movie=http://example.com/schema/favourite_movieopenid.ax.count.fav_movie=3openid.ax.required=fname,genderopenid.ax.if_available=fav_dog,fav_movieopenid.ax.update_url=http://idconsumer.com/update?transaction_id=a6b5c41

Page 46: The Identity Problem of the Web and how to solve it

openid.ns.ax=http://openid.net/srv/ax/1.0openid.ax.mode=fetch_responseopenid.ax.type.fname=http://example.com/schema/fullnameopenid.ax.type.gender=http://example.com/schema/genderopenid.ax.type.fav_dog=http://example.com/schema/favourite_dogopenid.ax.type.fav_movie=http://example.com/schema/favourite_movieopenid.ax.value.fname=John Smithopenid.ax.count.gender=0openid.ax.value.fav_dog=Spotopenid.ax.count.fav_movie=2openid.ax.value.fav_movie.1=Movie1openid.ax.value.fav_movie.2=Movie2openid.ax.update_url=http://idconsumer.com/update?transaction_id=a6b5c41

Page 47: The Identity Problem of the Web and how to solve it

openid.ns.ax=http://openid.net/srv/ax/1.0openid.ax.mode=store_requestopenid.ax.type.fname=http://example.com/schema/fullnameopenid.ax.value.fname=Bob Smithopenid.ax.type.fav_movie=http://example.com/schema/favourite_movieopenid.ax.count.fav_movie=2openid.ax.value.fav_movie.1=Movie1openid.ax.value.fav_movie.2=Movie2

Page 48: The Identity Problem of the Web and how to solve it

openid.ns.ax=http://openid.net/srv/ax/1.0openid.ax.mode=store_response_success

Page 49: The Identity Problem of the Web and how to solve it

http://oauth.net/

Page 50: The Identity Problem of the Web and how to solve it

lanyrd.com

twitter.com

Pre Registration of Client at Twitter:

- Shared Consumer Key- Shared Consumer Secret

Page 51: The Identity Problem of the Web and how to solve it

HTTP POSTConnect with Twitter

lanyrd.com

Page 52: The Identity Problem of the Web and how to solve it

twitter.com

HTTP POSTConnect with Twitter

HTTP GETConsumer KeyRedirect URISignature (Consumer Secret)

lanyrd.com

Page 53: The Identity Problem of the Web and how to solve it

twitter.com

HTTP POSTConnect with Twitter

Request TokenRequest Token Secret

lanyrd.com

Page 54: The Identity Problem of the Web and how to solve it

http://twitter.com/authorize?requestToken=...&consumerKey=...

HTTP Redirect

lanyrd.com

Page 57: The Identity Problem of the Web and how to solve it

Grant permission

twitter.com/authorize

Create verifier and bind it to User and Request Token

Page 59: The Identity Problem of the Web and how to solve it

HTTP GET

lanyrd.com(RedirectURI?

verifier=...)

Page 60: The Identity Problem of the Web and how to solve it

HTTP GET

HTTP GETConsumer Key, RequestTokenVerifierSignature (Consumer & Request Token Secret)

twitter.com

lanyrd.com

Page 61: The Identity Problem of the Web and how to solve it

HTTP GET

Access TokenAccess Token Secret

twitter.com

lanyrd.com

Page 62: The Identity Problem of the Web and how to solve it

HTTP GET

API RequestConsumer Key, Access TokenSignature (Consumer & Access Token Secret)

twitter.com

lanyrd.com

Page 63: The Identity Problem of the Web and how to solve it

• Combines OpenID Authentication and OAuth authorization

openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0&openid.oauth.consumer=123456

openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0&openid.oauth.request_token=7890

OpenID + OAuth

Page 64: The Identity Problem of the Web and how to solve it

OpenID is dead

Page 66: The Identity Problem of the Web and how to solve it

„OpenID is the worst possible "solution" I have ever seen in my entire life to a problem that most people don't really have.“

Yishan Wong (Facebook)

http://www.quora.com/What-s-wrong-with-OpenID

Page 67: The Identity Problem of the Web and how to solve it

Failures of OpenID 2.0

Complex to implement

URL as identifier => Bad User Experience

Do you have an OpenID?

What is it?

No marketing

Page 68: The Identity Problem of the Web and how to solve it

Facebook Connect250,000,000 monthly users

Page 69: The Identity Problem of the Web and how to solve it

So let‘s all use Facebook?

Page 70: The Identity Problem of the Web and how to solve it

How to fix it?

Page 71: The Identity Problem of the Web and how to solve it

Easier to implement

More simple specification

Better user experience

wider adption

Built on top of OAuth 2.0

Page 72: The Identity Problem of the Web and how to solve it

What‘s wrong with OAuth?

Does not work well with non web or JavaScript based clients

The „Invalid Signature“ Problem

Complicated Flow, many requests

Page 73: The Identity Problem of the Web and how to solve it

http://oauth.net/

Page 74: The Identity Problem of the Web and how to solve it

http://tools.ietf.org/html/draft-ietf-oauth-v2

What‘s new in OAuth2? (Draft 10)

Different client profiles

No signatures

No Token Secrets

Cookie-like Bearer Token

No Request Tokens

Much more flexible regarding extensions

Mandatory TSL/SSL

Page 75: The Identity Problem of the Web and how to solve it

Web-Server Profile

Page 76: The Identity Problem of the Web and how to solve it

lanyrd.com

twitter.com

Pre Registration of Client at Twitter:

- Shared Client ID- Shared Client Secret- Redirect URI

Page 77: The Identity Problem of the Web and how to solve it

HTTP(S) POSTConnect with Twitter

lanyrd.com

Page 78: The Identity Problem of the Web and how to solve it

http://twitter.com/authorize?&clientId=...

HTTPS Redirect

lanyrd.com

Page 81: The Identity Problem of the Web and how to solve it

Grant permission

twitter.com/authorize

Create authorization code and bind it to User and ClientID

Page 83: The Identity Problem of the Web and how to solve it

HTTPS GET

lanyrd.com(RedirectURI?

authorizationCode=...)

Page 84: The Identity Problem of the Web and how to solve it

HTTPS GET

HTTPS GETConsumer KeyAuthorization CodeConsumer Secret

twitter.com

lanyrd.com

Page 85: The Identity Problem of the Web and how to solve it

HTTPS GET

Access Token(Refresh Token)

twitter.com

lanyrd.com

Page 86: The Identity Problem of the Web and how to solve it

HTTPS GET

HTTPS API RequestAccess Token

twitter.com

lanyrd.com

Page 87: The Identity Problem of the Web and how to solve it

HTTPS GET

HTTPS GETConsumer KeyRefresh TokenConsumer Secret

twitter.com

lanyrd.com

Page 88: The Identity Problem of the Web and how to solve it

HTTPS GET

Access TokenRefresh Token

twitter.com

lanyrd.com

Page 89: The Identity Problem of the Web and how to solve it

User-Agent Profile

Page 90: The Identity Problem of the Web and how to solve it

http://twitter.com/authorize?&clientId=...

Open Popup

lanyrd.com

Page 94: The Identity Problem of the Web and how to solve it

lanyrd.com

HTTPS RedirectRedirectURI#acces

sToken

twitter.com/authorize

RedirectURI#accessToken

lanyrd.com

Page 95: The Identity Problem of the Web and how to solve it

lanyrd.com

RedirectURI#accessToken

Parse Access Token from FragmentSend it to opening window

Close popup lanyrd.com

Page 96: The Identity Problem of the Web and how to solve it

Same Origin Policy

Page 97: The Identity Problem of the Web and how to solve it

lanyrd.com

HTTPS Ajax Request to APIAccess Token

twitter.com

Page 98: The Identity Problem of the Web and how to solve it

Same Origin Policy

Page 99: The Identity Problem of the Web and how to solve it

JSONP

Page 100: The Identity Problem of the Web and how to solve it

Cross Origin Request Sharing (CORS)

Page 101: The Identity Problem of the Web and how to solve it

Backendapi.twitter.com

Client lanyrd.com

AJAX

Access-Control-Allow-Origin: *

http://www.w3.org/TR/cors/

Page 102: The Identity Problem of the Web and how to solve it

What happend to signatures?

Bearer Tokens are fine over secure connection

Vulnerable if discovery is introduced

Or if TSL/SSL is not possible

So OAuth 1.0 signatures alternatively available

Page 103: The Identity Problem of the Web and how to solve it

Scopes

Optional parameter for provider specific implementations

Additional return values

Access Control

Page 104: The Identity Problem of the Web and how to solve it

http://openidconnect.com/

Scope: „openid“

With access token additional values are returned

UserID: URL to Portable Contacts endpoint

TimestampSignature

Page 106: The Identity Problem of the Web and how to solve it

DEMO

Page 107: The Identity Problem of the Web and how to solve it

OpenID Connect Discovery

Get Identifier of user

Look for a link pointing to the OpenID Connect endpoints in the returned LRDD

Call /.well-­‐known/host-­‐meta file at the domain of the user‘s provider

Page 110: The Identity Problem of the Web and how to solve it

http://www.oexchange.org/

Page 111: The Identity Problem of the Web and how to solve it

Phishing

Page 112: The Identity Problem of the Web and how to solve it

E-mail address equals identity?

@

Page 113: The Identity Problem of the Web and how to solve it

Can the browser help?

Page 114: The Identity Problem of the Web and how to solve it

http://esw.w3.org/Foaf%2Bssl

FOAF+SSL (WebID)

Page 116: The Identity Problem of the Web and how to solve it

Bad browser UI

Syncing between different computers?

More than one user on the same computer?

Page 117: The Identity Problem of the Web and how to solve it

Mozilla UX Mockups

Page 118: The Identity Problem of the Web and how to solve it

https://browserid.org/

Page 120: The Identity Problem of the Web and how to solve it

• We need a single sign on system for the web

• Proprietary solutions are bad for users, site owners and developers

• OpenID is cool, but has some problems

• A new more simple and flexible spec is coming up

• Browser vendors are working to solve this problem in the browser

Summing it up

Page 121: The Identity Problem of the Web and how to solve it

Rate and Comment

http://spkr8.com/t/8738