Log on:
Powered by Elgg

Ben Werdmuller :: Blog :: OpenID is not the answer

August 16, 2007

To everything, at least.

OpenID is a fantastic little protocol that lets a user log in with their username from another service. It means you can log into Explode with your AIM screen name; you can also log into Livejournal with your Explode profile URL. The OpenID client site shoots the user's web browser over to the OpenID server site, authentication is performed, a token is passed back to the client, and bob's your uncle.

As far as this goes, it's simple, powerful, and very clever. If you're building a new web application, I highly recommend including OpenID functionality - even if you don't switch it on for everybody. But what happens if you want to do something behind the scenes?

The larger web applications are typically built around a number of server architectures, which each perform a different task. One might process some data on the back end; another might be reserved for displaying thumbnail images. If all the servers are owned by one body, they can each be passed a token (maybe even a cookie if they're all subdomains of the same parent domain), and poll the authentication server for the current user's details.

Now imagine you want to build a decentralised version of that using web services which are all owned by different organisations - but web services that need to know about who you are. One might provide storage, another might provide a profile, a third might be a messaging application. How do you provide a generalised way of passing authentication across, if there's no central authentication authority (as there isn't in OpenID, or in a decentralised system), and you don't want to go through the user's web browser each time?

Don't say Shibboleth.

None of the standards out there match the simplicity of OpenID, and therefore stand a chance of being as widely adopted. SAML, nominally the standard, requires SOAP, which brings its own problems. Even OpenID, when you examine the number of supported services, is very far away from becoming a mainstream standard. Federated identity is tough, but I think part of that may be to do with the way these standards are created; often they're the products of committee development, either in an institutional or corporate field. In both cases, the demands placed on the spec by the various stakeholders are inevitably going to cause bloat and inefficiency; the two surefire things that will prevent standard adoption. OpenID, meanwhile, has a very small spec, does what it's supposed to and nothing more, and even has pre-written code classes available via JanRain.

This is one of the issues we'll be bringing up at the Data Sharing Summit next month; I'd be interested to hear your ideas. Project Higgins looks to have a very healthy (user-centric, protocol-agnostic) attitude towards identity federation, and they may be one to watch.

Posted by Ben Werdmuller


Comments

  1. "How do you provide a generalised way of passing authentication across, if there's no central authentication authority (as there isn't in OpenID, or in a decentralised system), and you don't want to go through the user's web browser each time?"

    I don' t understand. I thought OpenID provided exactly that, cross-domain single sign on (via a cookie to the IdP domain)?  All of the services would have to support OpenID, off course. There is a centralized authentication authority: the identity provider associated with the OpenID URL. It' s decentralized, because the IdP can be anyone, it's user controlled, because the IdP can be changed at will by the user. Did I misunderstand?

     

    Ewout ter HaarEwout ter Haar on Thursday, 16 August 2007, 23:49 CEST # |

  2. The problem with OpenID is that for each entity, the user has to manually authorise it through the browser. For entities that actually consist of a number of sub-entities that exist elsewhere on the Internet - or anything that doesn't share a domain - that could be a problem. While it's a fantastic standard, that process limits the kinds of service that OpenID can support.

    Ben WerdmullerBen Werdmuller on Friday, 17 August 2007, 10:49 CEST # |

  3. Well, I just tried my OpenID, ewout.org at two sites, http://pccepa21.if.usp.br:8004/moodle/ and http://ex.plode.us/login.php and I never had to authorize manually: both these sites talked to myopenid.com behind my back (as they should), since I was already logged in there. (By the way, ex.plode.us does not handle delegation: it would handle ewout.myopenid.com but not http://ewout.org . That is a problem if I want to change my IdP from myopenid to something else.)

    But now I understand what you saying: even while the user can be logged in automatically to various services, your third-party web-service cannot impersonate the user and log in on her behalf, to have access to her data. For that to happen your web-service would have to have permission from the user. (Leading to elaborate page flows like flickr does when it gives permission to other aplication to access your fotos)

    This is certainly not something that openid was designed for, but does it have anything to do with it being distributed or not?  A centralized authentication service would not solve the problem of your web-service. 

    Ewout ter HaarEwout ter Haar on Friday, 17 August 2007, 13:30 CEST # |

  4. You might not have needed to authorise manually, but they didn't exactly talk to myopenid.com behind your back: there was cookie checking from your browser, and it required your involvement. In a centralised service, you could log in to one subservice and have the other subservices trust it as a matter of course; in a system where all the subservices are in separate places, you'd need to authenticate with each one.

    Granted, we haven't seen many services distributed this way .. but I think we will further down the line.

    Ben WerdmullerBen Werdmuller on Friday, 17 August 2007, 13:36 CEST # |

  5. But when I log in to for example ex.plode.us, I see it talking to myopenid.com in the status bar. What is that all about then? The cookie on my computer only is send to the myopenid.com domain, right? I thought that ex.plode.us, when it receives the openid url, must dereference the url, check what is the IdP, ask the IdP whether it can get authentication, the *IdP* then checks the cookie and if I am logged in, sends a token to ex.plode.com.

    Also, why does it require my involvement? I only had to give it my identity, a url. Any service could do that for me so that I would not have to manually enter a string in a text box.

    Anyway, all this only authenticates me and my browser to all of my services. It does not authenticate your web-service off course. I do understand your point that openid based access to third party data would be something interesting to start thinking about how to standardize. There is this article explaining how Google, Yahoo etc. give access to third paries to their users data:  http://www.xml.com/lpt/a/1705 Could something like this be build upon OpenID?

    Ewout ter HaarEwout ter Haar on Friday, 17 August 2007, 14:47 CEST # |

  6. It dawned on me that we are talking past each other. You are thinking like a developer and when you say "require your involvement" you mean the the users browser is involved, whereas for me, as a user, it all happens automagically (as if by technology).

    So I looked into it a bit further, and found some other people thinking about the same thing: This peace makes your point very succinctly:  "[OpenID] doesn't help when you need to get some explicit token to pass around to services to prove that the user authorized you to do something on their behalf." This post has a nice summary of the issues. It mentions oauth, apparently an effort to leverage OpenID to do the kinds of things you mention, but nothing is released yet.

    Ewout ter HaarEwout ter Haar on Saturday, 18 August 2007, 13:06 CEST # |

  7. It is a common misconception that SAML requires SOAP.  In fact, that is not true.  A variation of the primary SAML use case is outlined in wikipedia:

    http://en.wikipedia.org/wiki/SAML

    This simple flow does not require SOAP.

    default user iconTom Scavo on Saturday, 18 August 2007, 18:08 CEST # |

You must be logged in to post a comment.