SlideShare a Scribd company logo
Distributed Identities
with OpenID
Bastian Hofmann
VZnet Netzwerke Ltd.
OpenID is dead
„OpenID has been a burden on support
since the day it was launched.“
„Fewer than 1% of all 37signals users are
currently using OpenID.“


http://productblog.37signals.com/products/2011/01/well-be-retiring-our-
support-of-openid-on-may-1.html
„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
Facebook Connect
250,000,000 monthly users
So why are you here?
• Why identity management is still a problem
• OpenID how it works, and why it fails
• OpenID Connect & OAuth2: OpenIDs
  future?
• What can browser vendors do?
Distributed Identities with OpenID
Distributed Identities with OpenID
Distributed Identities with OpenID
Distributed Identities with OpenID
Questions? Ask!
http://slideshare.net/bashofmann
Only one identity?
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
Paul Adams
http://www.slideshare.net/padday/the-real-life-social-network-v2
Distributed Identities with OpenID
Distributed Identities with OpenID
Sign up again and again
Passwords are broken

Same password for more than one service

                       Saved unsecurely in the browser

 Names, birthdays, car brand, ...
                                     Disclosed to others

                    Too short, too simple

  Sent over non encrypted connections
Single Sign On
Microsoft Live ID




Launched 1999 as .net Passport
Facebook Connect
Distributed Identities with OpenID
And there are much more
Nascar problem
Aggregation




http://www.janrain.com/
OpenID




http://openid.net/
The Client
Discovery
<link rel="openid.server" href="http://www.myopenid.com/
server" />
<link rel="openid2.provider" href="http://www.myopenid.com/
server" />




                 Delegation
<meta http-equiv="X-XRDS-Location" content="http://
bhofmann.myopenid.com/" />
    <link rel="openid2.provider" href="http://
www.myopenid.com/server" />
    <link rel="openid2.local_id" href="http://
bhofmann.myopenid.com/" />
    <link rel="openid.server" href="http://www.myopenid.com/
server" />
    <link rel="openid.delegate" href="http://
bhofmann.myopenid.com/" />
Connection Flow
DEMO
Authentication vs Authorization
Who is the user?

             Is this really user X?

                        VS
                           Is X allowed to do something?
                   Does X have the permission?

       Client sites want more than just a
        unique identifier (Social Graph)
But there are Spec Extensions
Simple Registration
• Allows to specify certain fields in request that
  must or should be returned by the Identity
  Provider
       openid.sreg.required=openid.sreg.fullname&
       openid.sreg.optional=openid.sreg.email,openid.sreg.gender




       openid.sreg.fullname=Bastian&openid.sreg.gender=male
Attribute Exchange
• Fetch Request
penid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=fetch_request
openid.ax.type.fname=http://example.com/schema/fullname
openid.ax.type.gender=http://example.com/schema/gender
openid.ax.type.fav_dog=http://example.com/schema/favourite_dog
openid.ax.type.fav_movie=http://example.com/schema/
favourite_movie
openid.ax.count.fav_movie=3
openid.ax.required=fname,gender
openid.ax.if_available=fav_dog,fav_movie
openid.ax.update_url=http://idconsumer.com/update?
transaction_id=a6b5c41
Attribute Exchange
• Fetch Response
openid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=fetch_response
openid.ax.type.fname=http://example.com/schema/fullname
openid.ax.type.gender=http://example.com/schema/gender
openid.ax.type.fav_dog=http://example.com/schema/favourite_dog
openid.ax.type.fav_movie=http://example.com/schema/
favourite_movie
openid.ax.value.fname=John Smith
openid.ax.count.gender=0
openid.ax.value.fav_dog=Spot
openid.ax.count.fav_movie=2
openid.ax.value.fav_movie.1=Movie1
openid.ax.value.fav_movie.2=Movie2
openid.ax.update_url=http://idconsumer.com/update?
transaction_id=a6b5c41
Attribute Exchange
• Store Request
openid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=store_request
openid.ax.type.fname=http://example.com/schema/fullname
openid.ax.value.fname=Bob Smith
openid.ax.type.fav_movie=http://example.com/schema/
favourite_movie
openid.ax.count.fav_movie=2
openid.ax.value.fav_movie.1=Movie1
openid.ax.value.fav_movie.2=Movie2

• Store Respons
openid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=store_response_success
http://oauth.net/
OAuth 1.0a Flow
+----------+                                  +---------------+
|          -+----(B)-- Request Token -------->|               |
| End-user |                                  | Authorization |
|     at    |<---(C)-- User authenticates --->|     Server    |
| Browser |                                   |               |
|          -+----(D)-- Verifier -------------<|               |
+-|----|---+                                  +---------------+
   |     |                                        ^      v
  (B) (D)                                         |      |
   |     |                                        |      |
   ^     v                                        |      |
+---------+                                       |      |
|          |>---(A)-- Redirect URL ---------------|      |
|    Web   |<---(A)-- Request Token + Secret -----|      |
| Client |>---(E)-- Request Token, Verifier ----'        |
|          |<---(E)-- Access Token + Secret -------------'
+---------+

                    Every Request: Client Credentials, Nonce, Timestamp, Signature

http://oauth.net/
OpenID + OAuth

• 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
Failures of OpenID 2.0
         Complex to implement

                            No marketing

Do you have an OpenID?
                           What is it?


 URL as identifier => Bad User Experience
How to fix it?
Easier to implement
                             Better user experience

Built on top of OAuth 2.0
                            More simple specification

  wider adption
What‘s wrong with OAuth?

         Does not work well with non web or
         JavaScript based clients


The „Invalid Signature“ Problem



                    Complicated Flow, many requests
http://oauth.net/
What‘s new in OAuth2?                                        (Draft 10)




                                    No signatures
Cookie-like Bearer Token

                       Different client profiles
 No Token Secrets
                               No Request Tokens
   Mandatory TSL/SSL

           Much more flexible regarding extensions
                                    http://tools.ietf.org/html/draft-ietf-oauth-v2
Web-Server Profile
+----------+            Client Identifier       +---------------+
|          -+----(A)--- & Redirect URI ------>|                 |
| End-user |                                    | Authorization |
|     at     |<---(B)-- User authenticates --->|      Server    |
| Browser |                                     |               |
|          -+----(C)-- Authorization Code ---<|                 |
+-|----|---+                                    +---------------+
   |     |                                          ^      v
  (A) (C)                                           |      |
   |     |                                          |      |
   ^     v                                          |      |
+---------+                                         |      |
|          |>---(D)-- Client Credentials, --------'        |
|    Web   |           Authorization Code,                 |
| Client |               & Redirect URI                    |
|          |                                               |
|          |<---(E)----- Access Token -------------------'
+---------+         (w/ Optional Refresh Token)
User-Agent Profile
       +----------+          Client Identifier     +----------------+
       |          |>---(A)-- & Redirection URI --->|                |
       |          |                                |                |
End <--+ - - - +----(B)-- User authenticates -->| Authorization |
User   |          |                                |     Server     |
       |          |<---(C)--- Redirect URI -------<|                |
       | Client |           with Access Token      |                |
       |    in    |            in Fragment         +----------------+
       | Browser |
       |          |                                +----------------+
       |          |>---(D)--- Redirect URI ------->|                |
       |          |         without Fragment       |   Web Server   |
       |          |                                |   with Client |
       |    (F)   |<---(E)--- Web Page with ------<|    Resource    |
       | Access |                Script            |                |
       |   Token |                                 +----------------+
       +----------+
What happend to signatures?

                     Ongoing controvers discussion


Bearer Tokens are fine over secure connection


                 Vulnerable if discovery is introduced


 Or if TSL/SSL is not possible
Scopes

           Optional parameter for provider
           specific implementations


Additional return values


                           Access Control
Scope: „openid“

       With access token additional values are returned


  UserID: URL to Portable Contacts endpoint

                 Timestamp
                                    Signature
http://openidconnect.com/
https://github.com/vznet/vz_id_democlient
http://opensocial-demo.vz-modules.net/vzid/index.php
DEMO
OpenID Connect
             Discovery
Get Identifier of user

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


Look for a link pointing to the OpenID
Connect endpoints in the returned
LRDD
Phishing
@    E-mail address
    equals identity?
Can the browser help?
FOAF+SSL (WebID)




http://esw.w3.org/Foaf%2Bssl
DEMO
Bad browser UI



Syncing between different computers?




       More than one user on the same computer?
Mozilla UX Mockups
https://browserid.org/
DEMO
Summing it up

• We need a single sign on system for the
  web
• OpenID is cool, but has some problems
• Proprietary solutions are bad for users, site
  owners and developers
• A new more simple and flexible spec is
  coming up
• Browser vendors are working to solve this
  problem in the browser
h"p://twi"er.com/Bas2anHofmann
h"ps://profiles.google.com/bashofmann
h"p://lanyrd.com/people/Bas2anHofmann/
h"p://slideshare.net/bashofmann

mail@bas2anhofmann.de

More Related Content

PDF
Distributed Identities with OpenID
PPTX
OAuth-as-a-service - using ASP.NET Web API and Windows Azure Access Control -...
PPTX
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
PPTX
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
PDF
Minor Mistakes In Web Portals
PPTX
4. tmg 2010 e uag 2010
PPTX
Lecture 20101124
PDF
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
Distributed Identities with OpenID
OAuth-as-a-service - using ASP.NET Web API and Windows Azure Access Control -...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
Minor Mistakes In Web Portals
4. tmg 2010 e uag 2010
Lecture 20101124
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský

Viewers also liked (6)

DOC
Squid安装配置
PDF
Crossing the Boundaries of Web Applications with OpenSocial
PDF
The Identity Problem of the Web and how to solve it
PDF
How to create OpenSocial Apps in 45 minutes
PDF
Crossing the Boundaries of Web Applications with OpenSocial
PDF
Introduction to rg\injection
Squid安装配置
Crossing the Boundaries of Web Applications with OpenSocial
The Identity Problem of the Web and how to solve it
How to create OpenSocial Apps in 45 minutes
Crossing the Boundaries of Web Applications with OpenSocial
Introduction to rg\injection
Ad

Similar to Distributed Identities with OpenID (20)

PPT
Oauth
PDF
How to create social apps for millions of users
PPTX
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
PPTX
OpenID Connect Demo at OpenID Tech Night
PDF
Oauth2.0
PDF
Technical Background of VZ-ID
PDF
international PHP2011_Bastian Hofmann_Mashing up java script
PDF
Mashing up JavaScript
PDF
Crossing the Boundaries of Web Applications with OpenSocial
PDF
Client-side Auth with Ember.js
PDF
Keeping Pace with OAuth’s Evolving Security Practices.pdf
PDF
Share All The Things With UMA
PPTX
Multi-Factor Authentication for your clouds
DOC
seminar on proxyserver
PDF
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
PDF
OpenSocial - Past, Present, Future
PDF
Some OAuth love
PDF
Accessing APIs using OAuth on the federated (WordPress) web
PPTX
Node js to sharepoint authentication
PDF
Distributed Identities with OpenID
Oauth
How to create social apps for millions of users
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OpenID Connect Demo at OpenID Tech Night
Oauth2.0
Technical Background of VZ-ID
international PHP2011_Bastian Hofmann_Mashing up java script
Mashing up JavaScript
Crossing the Boundaries of Web Applications with OpenSocial
Client-side Auth with Ember.js
Keeping Pace with OAuth’s Evolving Security Practices.pdf
Share All The Things With UMA
Multi-Factor Authentication for your clouds
seminar on proxyserver
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
OpenSocial - Past, Present, Future
Some OAuth love
Accessing APIs using OAuth on the federated (WordPress) web
Node js to sharepoint authentication
Distributed Identities with OpenID
Ad

More from Bastian Hofmann (14)

PDF
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
PDF
Mashing up JavaScript
PDF
Opening up the Social Web - Standards that are bridging the Islands
PDF
Mashing up JavaScript – Advanced Techniques for modern Web Apps
PDF
Creating social games for millions of users
PDF
Distributed Social Networking
KEY
Advanced Capabilities of OpenSocial Apps
PDF
Creating OpenSocial Apps for millions of users
PDF
How to make your social games successfull
PDF
Opening up the Social Web - Standards that are bridging the Islands
PDF
Creating OpenSocial Apps
PDF
OpenSocial in der Praxis
PDF
OpenSocial Done Right
PDF
Social apps done right
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
Mashing up JavaScript
Opening up the Social Web - Standards that are bridging the Islands
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Creating social games for millions of users
Distributed Social Networking
Advanced Capabilities of OpenSocial Apps
Creating OpenSocial Apps for millions of users
How to make your social games successfull
Opening up the Social Web - Standards that are bridging the Islands
Creating OpenSocial Apps
OpenSocial in der Praxis
OpenSocial Done Right
Social apps done right

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
Teaching material agriculture food technology
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Approach and Philosophy of On baking technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation theory and applications.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Review of recent advances in non-invasive hemoglobin estimation
Teaching material agriculture food technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
NewMind AI Weekly Chronicles - August'25 Week I
Mobile App Security Testing_ A Comprehensive Guide.pdf
Understanding_Digital_Forensics_Presentation.pptx
Machine learning based COVID-19 study performance prediction
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Spectral efficient network and resource selection model in 5G networks
Approach and Philosophy of On baking technology
Unlocking AI with Model Context Protocol (MCP)
Encapsulation theory and applications.pdf
cuic standard and advanced reporting.pdf
Big Data Technologies - Introduction.pptx
Chapter 3 Spatial Domain Image Processing.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Network Security Unit 5.pdf for BCA BBA.
Bridging biosciences and deep learning for revolutionary discoveries: a compr...

Distributed Identities with OpenID

  • 1. Distributed Identities with OpenID Bastian Hofmann VZnet Netzwerke Ltd.
  • 3. „OpenID has been a burden on support since the day it was launched.“ „Fewer than 1% of all 37signals users are currently using OpenID.“ http://productblog.37signals.com/products/2011/01/well-be-retiring-our- support-of-openid-on-may-1.html
  • 4. „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
  • 6. So why are you here?
  • 7. • Why identity management is still a problem • OpenID how it works, and why it fails • OpenID Connect & OAuth2: OpenIDs future? • What can browser vendors do?
  • 15. 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
  • 19. Sign up again and again
  • 20. Passwords are broken Same password for more than one service Saved unsecurely in the browser Names, birthdays, car brand, ... Disclosed to others Too short, too simple Sent over non encrypted connections
  • 22. Microsoft Live ID Launched 1999 as .net Passport
  • 25. And there are much more
  • 30. Discovery <link rel="openid.server" href="http://www.myopenid.com/ server" /> <link rel="openid2.provider" href="http://www.myopenid.com/ server" /> Delegation <meta http-equiv="X-XRDS-Location" content="http:// bhofmann.myopenid.com/" /> <link rel="openid2.provider" href="http:// www.myopenid.com/server" /> <link rel="openid2.local_id" href="http:// bhofmann.myopenid.com/" /> <link rel="openid.server" href="http://www.myopenid.com/ server" /> <link rel="openid.delegate" href="http:// bhofmann.myopenid.com/" />
  • 32. DEMO
  • 33. Authentication vs Authorization Who is the user? Is this really user X? VS Is X allowed to do something? Does X have the permission? Client sites want more than just a unique identifier (Social Graph)
  • 34. But there are Spec Extensions
  • 35. Simple Registration • Allows to specify certain fields in request that must or should be returned by the Identity Provider openid.sreg.required=openid.sreg.fullname& openid.sreg.optional=openid.sreg.email,openid.sreg.gender openid.sreg.fullname=Bastian&openid.sreg.gender=male
  • 36. Attribute Exchange • Fetch Request penid.ns.ax=http://openid.net/srv/ax/1.0 openid.ax.mode=fetch_request openid.ax.type.fname=http://example.com/schema/fullname openid.ax.type.gender=http://example.com/schema/gender openid.ax.type.fav_dog=http://example.com/schema/favourite_dog openid.ax.type.fav_movie=http://example.com/schema/ favourite_movie openid.ax.count.fav_movie=3 openid.ax.required=fname,gender openid.ax.if_available=fav_dog,fav_movie openid.ax.update_url=http://idconsumer.com/update? transaction_id=a6b5c41
  • 37. Attribute Exchange • Fetch Response openid.ns.ax=http://openid.net/srv/ax/1.0 openid.ax.mode=fetch_response openid.ax.type.fname=http://example.com/schema/fullname openid.ax.type.gender=http://example.com/schema/gender openid.ax.type.fav_dog=http://example.com/schema/favourite_dog openid.ax.type.fav_movie=http://example.com/schema/ favourite_movie openid.ax.value.fname=John Smith openid.ax.count.gender=0 openid.ax.value.fav_dog=Spot openid.ax.count.fav_movie=2 openid.ax.value.fav_movie.1=Movie1 openid.ax.value.fav_movie.2=Movie2 openid.ax.update_url=http://idconsumer.com/update? transaction_id=a6b5c41
  • 38. Attribute Exchange • Store Request openid.ns.ax=http://openid.net/srv/ax/1.0 openid.ax.mode=store_request openid.ax.type.fname=http://example.com/schema/fullname openid.ax.value.fname=Bob Smith openid.ax.type.fav_movie=http://example.com/schema/ favourite_movie openid.ax.count.fav_movie=2 openid.ax.value.fav_movie.1=Movie1 openid.ax.value.fav_movie.2=Movie2 • Store Respons openid.ns.ax=http://openid.net/srv/ax/1.0 openid.ax.mode=store_response_success
  • 40. OAuth 1.0a Flow +----------+ +---------------+ | -+----(B)-- Request Token -------->| | | End-user | | Authorization | | at |<---(C)-- User authenticates --->| Server | | Browser | | | | -+----(D)-- Verifier -------------<| | +-|----|---+ +---------------+ | | ^ v (B) (D) | | | | | | ^ v | | +---------+ | | | |>---(A)-- Redirect URL ---------------| | | Web |<---(A)-- Request Token + Secret -----| | | Client |>---(E)-- Request Token, Verifier ----' | | |<---(E)-- Access Token + Secret -------------' +---------+ Every Request: Client Credentials, Nonce, Timestamp, Signature http://oauth.net/
  • 41. OpenID + OAuth • 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
  • 42. Failures of OpenID 2.0 Complex to implement No marketing Do you have an OpenID? What is it? URL as identifier => Bad User Experience
  • 43. How to fix it?
  • 44. Easier to implement Better user experience Built on top of OAuth 2.0 More simple specification wider adption
  • 45. What‘s wrong with OAuth? Does not work well with non web or JavaScript based clients The „Invalid Signature“ Problem Complicated Flow, many requests
  • 47. What‘s new in OAuth2? (Draft 10) No signatures Cookie-like Bearer Token Different client profiles No Token Secrets No Request Tokens Mandatory TSL/SSL Much more flexible regarding extensions http://tools.ietf.org/html/draft-ietf-oauth-v2
  • 48. Web-Server Profile +----------+ Client Identifier +---------------+ | -+----(A)--- & Redirect URI ------>| | | End-user | | Authorization | | at |<---(B)-- User authenticates --->| Server | | Browser | | | | -+----(C)-- Authorization Code ---<| | +-|----|---+ +---------------+ | | ^ v (A) (C) | | | | | | ^ v | | +---------+ | | | |>---(D)-- Client Credentials, --------' | | Web | Authorization Code, | | Client | & Redirect URI | | | | | |<---(E)----- Access Token -------------------' +---------+ (w/ Optional Refresh Token)
  • 49. User-Agent Profile +----------+ Client Identifier +----------------+ | |>---(A)-- & Redirection URI --->| | | | | | End <--+ - - - +----(B)-- User authenticates -->| Authorization | User | | | Server | | |<---(C)--- Redirect URI -------<| | | Client | with Access Token | | | in | in Fragment +----------------+ | Browser | | | +----------------+ | |>---(D)--- Redirect URI ------->| | | | without Fragment | Web Server | | | | with Client | | (F) |<---(E)--- Web Page with ------<| Resource | | Access | Script | | | Token | +----------------+ +----------+
  • 50. What happend to signatures? Ongoing controvers discussion Bearer Tokens are fine over secure connection Vulnerable if discovery is introduced Or if TSL/SSL is not possible
  • 51. Scopes Optional parameter for provider specific implementations Additional return values Access Control
  • 52. Scope: „openid“ With access token additional values are returned UserID: URL to Portable Contacts endpoint Timestamp Signature http://openidconnect.com/
  • 54. DEMO
  • 55. OpenID Connect Discovery Get Identifier of user Call /.well-­‐known/host-­‐meta file at the domain of the user‘s provider Look for a link pointing to the OpenID Connect endpoints in the returned LRDD
  • 57. @ E-mail address equals identity?
  • 60. DEMO
  • 61. Bad browser UI Syncing between different computers? More than one user on the same computer?
  • 64. DEMO
  • 65. Summing it up • We need a single sign on system for the web • OpenID is cool, but has some problems • Proprietary solutions are bad for users, site owners and developers • A new more simple and flexible spec is coming up • Browser vendors are working to solve this problem in the browser