oauth with oauth.io : solving the oauth fragmentation for identity management on the web

137
From authentication to identity management Mehdi Medjaoui

Upload: mehdi-medjaoui

Post on 08-May-2015

3.269 views

Category:

Technology


1 download

DESCRIPTION

This talk is about the story of password and identity management on the web. It make an overview about passwod handling, single sign-on solution, OAuth and the future of it for the web, thanks Mozilla Persona and Docker.io Linux Containers. It also present OAuth.io , a solution to solve framgementation.

TRANSCRIPT

Page 1: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

From authentication to identity

management

Mehdi Medjaoui

Page 2: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Mehdi Medjaoui

@medjawiwebshell.io

oauth.io

Page 3: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Authentication

Page 4: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 5: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Bob

Page 6: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

I want to upload my photos to access them from anywhere

Page 7: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Page 8: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Hi Photo.service!

Page 9: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Hi! Who is it?

Page 10: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

I’m Bob

Page 11: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Prove it!

Page 12: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Here’s my secret: ...

Page 13: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Oh it’s you Bob!

Page 14: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Page 15: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Page 16: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Here’s my secret: ...

Page 17: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Here’s my password

Page 18: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Why passwords?

Page 19: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Identification

Page 20: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Authentication = Identification + Verification

Page 21: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

To correctly verify someone,a secret must relate to:

- what they know- what they have- what they are- what they can do

Page 22: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

But why passwords???

Page 23: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

In theory

Page 24: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 25: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 26: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 27: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 28: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Security vs Convenience

Page 29: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

Page 30: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service Music.service

Page 31: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service Music.service

Page 32: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service Music.service Email.service

Social.service Video.service

Page 33: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service Music.service Email.service

Social.service Video.service

Photo.service Music.service Email.service

Social.service Video.service

Photo.service Music.service Email.service

Social.service Video.service

Page 34: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Got cloudy these days...

Page 35: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 36: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Multiplication of web services have made passwords

- hard to remember if unique

Page 37: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 38: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Multiplication of web services have made passwords

- hard to remember if unique- annoying to type all day if strong

Page 39: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 40: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

password hell

Page 41: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Multiplication of web services have made passwords

- hard to remember if unique- annoying to type all day if strong- weak if not unique

Page 42: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Passwords (even strong)do not scale

with a growing number of services

Page 43: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Solution = Password manager ?

Page 44: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

simple interface design

Page 45: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Single Sign-On

Page 46: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Single sign-on (SSO) is a property of access control of multiple related, but independent software systems.

Single Sign-On

Page 47: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

The promise of SSO:

- UX with frictionless sign in and higher conversion

- Reduced IT costs

- Retrieving data with user’s consent but without annoying

forms

- Reduced password leak risks

Page 48: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

- SAML

- OpenID

- Facebook connect

- OAuth

- Persona

Page 49: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 50: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

I’m Bob from IDP

IDPIdentity provider

Photo.service

Page 51: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Is it really Bob? IDP

Identity provider

Photo.service

Page 52: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

IDPIdentity provider

Prove to me you’re Bob!

Photo.service

Page 53: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

IDPIdentity provider

Here’s my session / password

Photo.service

Page 54: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

IDPIdentity provider

You’re good

Photo.service

Page 55: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

IDPIdentity provider

He’s indeed Bob.

Photo.service

Page 56: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

IDPIdentity provider

Hi Bob! Gimme fotoz!

Photo.service

Page 57: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.service

myspace

Yahoo

Google

?

The user makes the choice

Page 58: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

- Based on URLs for personal data

http://google.com/profiles/meusername.wordpress.comblogname.blogspot.comwww.myspace.com/username

Page 59: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Authorization

Page 60: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

I want to print my photos from photo.service with printer.service

Page 61: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

The wrong way:

Page 62: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Key to photo.service

Page 63: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Hi, I want to print my photos.

Page 64: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Photo.service credentials?

Page 65: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Sure:

Page 66: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Hi I’m Bob & I have the key

Page 67: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

You’re indeed Bob.

Page 68: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Please send me these photos

Page 69: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Here you go

Page 70: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

I printed the photos.

Page 71: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Rogue Printer.service

needs Resource

Photo.servicehas Resource

I’m gonna look at all of Bob’s photos!

Page 72: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Rogue Printer.service

needs Resource

Photo.servicehas Resource

without his consent...

Page 73: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Never give your password to

other services

Page 74: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Authorization is the solution

Page 75: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

2008

Page 76: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Facebookhas Resource

some.serviceneeds

resource

Page 77: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 78: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Key to photo.service

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 79: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Hi, I’m Bob.

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 80: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

I have support for Photo.service, ...

Page 81: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Note: choice of supported resource providers has also to be made by printer.service

Printer.serviceneeds Resource

Photo.servicehas Resource

I have support for Photo.service, ...

Page 82: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Please use Photo.service

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 83: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Hi, I’m Printer.service

Page 84: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Prove it!

Page 85: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Here’s my client_secret

Page 86: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

You’re good.

Page 87: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

I need access to Bob’s photos

Page 88: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Who are you?

Page 89: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

I’m Bob. Here’s my key

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 90: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Do you allow Pr.S. to access your photos?

Page 91: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Sure!

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 92: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

You now have access to Bob’

s photos

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 93: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

Send me the holiday photos!

Page 94: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Here you go!

Printer.serviceneeds Resource

Photo.servicehas Resource

Page 95: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Printer.serviceneeds Resource

Photo.servicehas Resource

I printed the photos.

Page 96: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Photo.servicehas Resource

Note: Printer.service does not hold Bob’s key to Photo.service

Printer.serviceneeds Resource

Page 97: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

The PHOTO app chooses and control what OAuth provider to

integrate, so the user cannot choose the identity he wants

Page 98: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 99: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Based on API authorizations and endpoints between applications

Page 100: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

-

Page 101: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Single Sign-On conclusion

- OpenID (URLs) is a group of companies that trust each other to be an identity provider (IDP)OpenID let the choice to the user of the IDP- Facebook connect (Facebook Connect was the single sign on of Facebook affiliate ecosystem)- OAuth : the OAuth provider know the user AND the application. The End user application choose the IDP the end user can connect with.

Page 102: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OpenID OAuth SAML

Dates from 2005 2006 2001

Current version OpenID 2.0 OAuth 2.0 SAML 2.0

Main purposeSingle sign-on for consumers

API authorization

between applications

Single sign-on for enterprise

users

Protocols used XRDS, HTTP JSON, HTTPSAM, XML, HTTP, SOAP

Page 103: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth and the Highway to Hell

OAuth 2.0 and the Road to Hell

(Eran Hammer)

Page 104: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 105: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0 (2007)

OAuth provides a method for clients to access server resources on behalf of a resource owner (such as a different client or an end- user). It also provides a process for end-users to authorize third-party access to their server resources without sharing their credentials (typically, a username and password pair), using user- agent redirections.

http://tools.ietf.org/html/rfc5849

Page 106: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0 (2007)

Context : - php 4 - no https- Google involved- not Open ID

Pain:- Signatures- Broken libraries- Extensions - Crappy specifications

From Eran Hammer #FuckOauth

OAuth 2.0 - Looking Back and Moving On

Page 107: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0a (one legged)

#OAuthBible

Page 108: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0a (two legged)

#OAuthBible

Page 109: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0a (three legged)

#OAuthBible

Page 110: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0a (Echo)

#OAuthBible

Page 111: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 1.0a (xAuth)

#OAuthBible

Page 112: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 2.0

Page 113: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Authentication and Signatures

- Stop cryptographic requirements of

signing requests with the client ID and

secret and replaces signatures with

requiring HTTPS for all

communications between browsers,

clients and the API.

Page 114: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

User Experience and Alternative Authorization

Flows

OAuth 2 supports a better user experience for

native applications, and supports extending

the protocol to provide compatibility with

future device requirements.

Page 115: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Performance at Scale

- Many steps require state management and temporary

credentials, which require shared storage and are

difficult to synchronize across data centers.

- requires that the API server has access to the

application's ID and secret, which often breaks the

architecture of most large providers where the

authorization server and API servers are completely

separate.

Page 116: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

- OAuth 2.0 (Two-legged)

Client credentialResource user password

- OAuth 2.0 (Three-legged)

- OAuth 2.0 (Refresh token)

Scopes are often not implemented the good way, following the specs.

Sometimes spaces are not set, names are different from providers….

#OAuthBible

Page 117: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth is fragmented.

OAuth is broken.

Page 118: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth 2.0 is a compromise.

Page 119: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

-

Page 120: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Eran Hammer has quit the OAuth 2.0 Board.

He is building Oz.

Page 121: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Solutions to Consume OAuth ?

- The IETF specs- The OAuth Bible- Open source libraries (omniauth for ruby, requests or foauth for python, passport for node.js…)- Janrain, Dailycred- OAuth.io

Page 122: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 123: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth.io

Page 124: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Demo

Page 125: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth.io

Page 126: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth.io

Page 127: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Demo

Page 128: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

oauthd

Open source version of OAuth.io

Page 129: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

https://github.com/oauth-io/oauthd/blob/master/providers

The Glue of OAuth?

Page 130: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

OAuth Report #SOCIAL LOGIN

Page 131: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 132: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 133: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 134: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 135: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

The future?

Mozilla Persona (Browser ID)

Docker.io

Page 136: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web
Page 137: OAuth with OAuth.io : solving the OAuth Fragmentation for Identity Management on the Web

Thank you!

Mehdi Medjaoui

@medjawiwebshell.io

oauth.io