I'm trying to build a personal OpenID-based online identity using my domain name as identifier. I want to be able to accomplish all this:
- Make
http://alvaro.es/
my identifier. - Be able to switch providers transparently.
- Log into any third-party site that accepts OpenID.
- Be able to provide personal details (e-mail, time zone, avatar...) and get prompted whether to send them or not to sites that request them.
- Accept OpenID in my own (PHP-powered) sites without the need of purchasing SSL hosting.
I've read the usual doc and I've been evaluating several OpenID providers (Google, Yahoo, myOpenID... and even running my own server). The fact is that I've been using OpenID for a while and:
- Providers offer very scarce documentation or none at all.
- No matter what provider I choose, there are always sites where log-in fails (typically without an error message).
- I have little control (or none at all) on the identifier returned by the provider.
- I still can't understand how all this really works.
I'm looking for general advice but I understand that can be subjective so I'll make a few specific questions.
So far, I'm trying out myOpenId as provider and LightOpenID as consumer. My questions are:
My URL provides an HTTP header:
X-XRDS-Location: http://kalvaro.myopenid.com/?xrds=1
... and the following HTML tags:
<link rel="openid.server openid2.provider" href="http://www.myopenid.com/server"> <link rel="openid.delegate openid2.local_id" href="http://kalvaro.myopenid.com">
Is it correct? Is it enough?
myOpenID provides Your Domains, a feature to register your own domain name but I haven't dared to test it (it needs changes to the DNS) and the configuration form suggests I have to choose between
http://openid.alvaro.es/username
andhttp://username.alvaro.es/
as identifier (nothttp://alvaro.es/
). However, Stackoverflow still reportsalvaro.es
as my identifier without this feature. Do I need to use it?When implementing LightOpenID, I match the local user against
$openid->identity
(where$openid
is the instance of theLightOpenID
object). This attribute appears to be the URL supplied by the user. Is it correct?Are there more adequate providers or consumer libraries than the ones I chose?