OpenID on

I’ve finally finished up the OpenID signup for Rosebleed. The workflow is what you’d expect – OpenID box on the login form, if the given URL isn’t recognized then it redirects to the signup form and prepopulates it with the sreg fields.

I did notice a strange behaviour in OpenID; I’m not yet certain if I missed it in the spec or if it’s left to one’s judgement (note to self: read the spec again)… Anyway, here’s what happens:

– Say I sign up with “”. This site delegates to my ClaimID page, so the openid.identity response is, and this is what I actually use to identify the user.
To my thinking, I should be able to log in using “” (since that delegates to my ClaimID), or, or These URLs all end up at the same identity, so they should be equivalent — and that’s how I implemented it on Rosebleed.

I’ve noticed other OpenID-enabled sites handle this differently. On the OpenID Directory for instance, I first signed up as “”. I’ve gotten in the habit of logging in using; but when I try that at OpenID Directory, I get an error message that my email address is already registered to my ClaimID URL.

So, barring finding that the spec keeps “equivalent” OpenID URLs separate, I think I’m in the right here; always open to feedback though.

Update [2008-03-19]: I’ve checked the spec, and as it turns out, I’m actually in the wrong:

So, to use as their Identifier, but have Consumers actually verify with the Identity Provider located at, they’d add the following tags to the HEAD section of the HTML document returned when fetching their Identifier URL.

Now, when a Consumer sees that, it’ll talk to and ask if the End User is, never mentioning anywhere on the wire.

The main advantage of this is that an End User can keep their Identifier over many years, even as services come and go; they’ll just keep changing who they delegate to.