user@domain URNs, independent from OpenID spec
Mario Salzer
mario at erphesfurt.de
Mon Jul 4 09:14:36 PDT 2005
OpenID as it stands now verifies homepage addresses and
expects sites to use that as user identifiers. This may
be all fine and sufficient in the blog world and comment
forms, but won't lead to widespread use elsewhere.
As other people have noted earlier, the only meaningful
syntax for average users are "user at domain" identifiers.
Therefore I'd like to make a proposal, which can be used
with or without OpenID and would be just a second means
to make an URL from whatever the user entered.
- Like also concluded in the earlier discussions, of
course many many many people will confuse user at domain
IDs with email addresses initially (especially people
who cannot tell "the Internet" from the Web, or discern
discussion boards from forums). This problem however
clears itself after some education or the second failed
attempt to send mails to there.
- It is the most intuitive syntax, and that's the reason
this topic comes up on this mailing list that often
(...until it gets accepted).
- Expanding "user at example.com" into an URL is not much
worse than the address bar magic that the specification
requires for strings like "www.example.com".
- The finally resolved URL could be used in conjunction
with bare HTML (intermediate) pages or resolve directly
to vCards, FOAF, or ... files.
- Fully optional as far as OpenID is concerned. Didn't
even had to be mentioned there. It is up to web sites
to support it or not.
There is no need for any complicated and slow XML mapping
format or hard-wired URL and path schemes, like they came
up in former discussions.
IMO it would already suffice to embed a single rewriting
hint into a web sites front page; most likely in a <link>
or <meta> tag. Consumers would only look this up if a user
entered something with an @ inside, instead of a full URL
or host name.
The actual rel= or name= identifier is probably not all too
important - we just had to agree on a sounding name and a
useful syntax and then stick with it:
1) <meta name="userid.regex"
content="s/(\w+)@(.+)/http:\/\/$2\/user.cgi?=$1/;">
2) <link rel="userid-to-url"
href="http://www.example.com/cgi-bin/user.pl?id=" >
3) <link rel="username_transform"
href="http://%s.hoster.com.test/" >
All the above examples have their advantages and problems.
1) REGEX
Was feasible even with JavaScript, but looks a bit
like overkill even if it was the most flexible format.
(The @content format being fixed to "s/.../.../;")
2) URL PREFIX
Is the simplest possible syntax, and would probably
operate with redirects and/or intermediate HTML pages.
3) PLACEHOLDER
Is the simpler alternative to regular expressions,
and would make HTTP redirects unnecessary because user
names could be injected into domain names again.
(%s or $1 as placeholders would be most familiar.)
Ok, this is just a rough idea, but I hope it shows that
user at domain names would require nothing more than a single
(but cache able) lookup for the transformation prefix/regex
from a single HTML page. This restricted usage to one user
system/database per domain, but that's pretty similar to
what SMTP can accomplish at most ;)
My personal preference is #3 with "%s" as placeholder, but
I'm totally unsure which rel= name would look best:
- "userid"
- "userid.url"
- "userid.transform"
- "users"
- "userid.url-pattern"
- "userid.substitution"
- "user.url"
- "user-url"
- "site.users"
- "userid.convert"
- ...
Maybe we here can agree on one of the possible syntaxes
and a name for it. It is definitely worth the time
considering it, given that the final URL could point to
just a HTML page for OpenID use, but also indirectly to
FOAF/vCard/xCard/... user profiles. Additionally such a
scheme could be used and expanded into other systems (LID)
once agreed upon.
And a few more notes:
- I'd outright object the name for such a <link> or <meta>
entry becoming "openid.*" - I want to have such an
agreement fully independent from OpenID, and also fully
independent from any specific profile or data format (at
the URL endpoint). Though, I admit, I need this for my
own pet project.
- The user at domain syntax is far more sounding not only to
users, but probably also in the context OpenID was meant
to be used:
- "Message posted by bob.livejournal.com" may not read
all too weird yet (optically+semantically), but
- "Message from http://some.com/~strange/url.htm" is what
would inevitably happen
- "Comment written by jane at way.com" is in any case more
senseful
- The so called "URL canonicalization" from the spec is
meant to allow displaying the above "bob.livejournal.com"
abbreviations, but happens to work for site setups like
that from LJ only - many people will get/see ugly URLs -
even without the leading http:// (which crowns host names
to URLs).
- Danger of confusion with email addresses is an extremely
weak point, especially if clicking on "user at example.com"
wouldn't bring up an email client, but linked to the URL
endpoint (a user profile/info page most likely) instead.
Much like "user.livejournal.com" would underly a real
href to a web page.
Btw,
all belittling statements in this mail are meant to give
a second view onto the use of URLs in OpenID, not to start
a flamewar here on the user.provider.com vs. user at domain
syntax.
More information about the yadis
mailing list