OpenID Integration - Pros and Cons
Posted by Lance Ivy Tue, 02 Oct 2007 11:36:00 GMT
OpenID integration has certainly become more popular, and I’ve started building a generic Rails application shell built on 100% OpenID reliance. So I’ve thought about it a bit, and I’d like to take a look at some of the pros and cons surrounding OpenID integration.
Benefits of OpenID
no passwords
This is not trivial! Not having passwords means not having to worry about password encryption in your database, which lets you toss a couple fields out of your users table right away (password, password_salt). It also simplifies your form – no more please-enter-your-password-and-could-you-confirm-that-please? Furthermore, you don’t have to worry about resetting passwords and sending emails and, well, you get the picture.
trusted user data
With OpenID you can get trusted user data from the OpenID server. This’ll simplify your signup form quite a bit! All you need to do is collect an identity url, and use that to lookup the user’s name and email, etc.
And this is trusted data, so you don’t need to verify the email address (“please type it a second time…”). You don’t even need to activate the user! What’s the point? You can already trust that the email address is valid, so what good is a please-check-your-email-and-click-the-activation-link routine going to do you?
Drawbacks of OpenID
actually getting the data you asked for
The OpenID servers I’ve tried (notably MyOpenID) will listen when you say certain fields are required (name & email), and will tell the user when those fields are missing, but will still let the user bounce back to your application. Why? Now your application has to validate the data, complain, and ask them to try again? Why doesn’t the OpenID server do that for you?
signing up for two services at once
What happens if the user doesn’t already have an OpenID? You’ve got to convince them they want it, and motivate them to go sign up for a second service. Psychologically that’s a big deal. You’re trying to get as many people to sign up for your application as possible, yeah? You’re worried about conversion? You’re familiar with the idea that many people have some baseline of resistance to signing up for new things? Well how much harder is it going to be getting them to sign up for two new things at once? How much energy will the user have left for your application once they’ve figured out this whole “OpenID thing”?
routing signups through OpenID server
This is the biggest con for me, and I hope to see a library that simplifies this soon. To really use OpenID you have to route not only logins but signups through the OpenID server. The login routine is pretty simple now thanks to the open_id_authentication plugin, but signups are still a pain. Yes, your signup form is incredibly simple (“What’s your OpenID, and do you accept our terms and conditions?”), but now your controller has to postpone validation (you don’t have the name/email yet), bounce the user against their OpenID server, then (hopefully) validate and finish the process. This is certainly made more complicated in a RESTful application, because the OpenID server is going to bounce the user back via GET when you really want POST.
Mixing OpenID and Traditional Auth
Ok, so some people get scared by the cons. Those’re some big and scary unknowns, right? But they still like the idea of OpenID, so they implement OpenID alongside their traditional system. Hah, ok, go ahead, but now the application still has to support passwords (even if they’re not always needed) and activation and user data verification, and it has to branch the authentication logic to support the worst of both worlds. So why do it? What possible gain is there running both side by side? The way I see it, running both is just a way of saying “I wish upon a star that OpenID had better adoption and usability”. Supporting OpenID as an alternative doesn’t really push adoption, and it doesn’t simplify the application at all (just the opposite).
Conclusion
The big pros and cons tend to hinge around the signup process. There are very tangible programmatic benefits to using OpenID, but they’re balanced by a worry that we’re leaving behind one conversion process (a comfortable and familiar but still clunky signup process involving typing passwords and emails twice and checking your inbox for an activation code) for an unknown (slimmer signup forms balanced by reliance on a third-party server’s user experience).
But the OpenID servers out there seem to think that they’ll become popular if they court the users. They seem blind to the needs of the application itself, and what they really need to do is make all parties happy.
In the end, we need the early adopters to risk it all and get the momentum going. We need to hear success stories, and we need to polish the rough edges. But what we really need is an OpenID server that won’t make web interface designers lament the user experience of the signup process.
Subscribe