<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: identityprojection</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/identityprojection.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2008-01-24T02:02:19+00:00</updated><author><name>Simon Willison</name></author><entry><title>Django People: OpenID and microformats</title><link href="https://simonwillison.net/2008/Jan/24/upgrade/#atom-tag" rel="alternate"/><published>2008-01-24T02:02:19+00:00</published><updated>2008-01-24T02:02:19+00:00</updated><id>https://simonwillison.net/2008/Jan/24/upgrade/#atom-tag</id><summary type="html">
    &lt;p&gt;In hindsight, it was a mistake to launch &lt;a href="http://djangopeople.net/"&gt;Django People&lt;/a&gt; without support for &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt;. It was on the original feature list, but in the end I decided to cut any feature that wasn't completely essential in order to get the site launched before it drowned in an ocean of "wouldn't-it-be-cool-ifs".&lt;/p&gt;

&lt;p&gt;I thought that, once launched, the site would see a small amount of activity from a few interested parties and I'd have plenty of time to catch up on the feature backlog. What I didn't expect was that &lt;a href="http://djangopeople.net/about/"&gt;over 750 people&lt;/a&gt; would create profiles within the first 24 hours!&lt;/p&gt;

&lt;p&gt;So, I spent a few hours this evening integrating my current development version of &lt;a href="http://code.google.com/p/django-openid/"&gt;django-openid&lt;/a&gt;, which thankfully had about 80% of the code needed to integrate with Django's built-in authentication mechanism already written. Sadly the other 20% is either incomplete or a bit of a mess, but I've checked it in to &lt;a href="http://django-openid.googlecode.com/svn/branches/auth-integration/"&gt;a branch on Google Code&lt;/a&gt; for anyone who's interested.&lt;/p&gt;

&lt;p&gt;Anyway, there are a few new features on the site of interest to OpenID users:&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;When &lt;a href="http://djangopeople.net/signup/"&gt;signing up for a new account&lt;/a&gt;, you now have the option to start by signing in with an OpenID. If you do this, you'll be able to complete the signup form without having to pick a password. If your OpenID provider supports simple registration the name, e-mail address and username fields will be filled in for you.&lt;/li&gt;
    &lt;li&gt;If you already have an existing account, you can &lt;a href="http://djangopeople.net/openid/associations/"&gt;associate one or more OpenIDs&lt;/a&gt; with that account. You'll then be able to use any of them to sign in to the account. Why multiple OpenIDs instead of just one? Two reasons: firstly, it opens the potential for doing interesting things with multiple OpenIDs from different providers in the future; secondly, it gives you a fallback for if one of your OpenID providers becomes unavailable.&lt;/li&gt;
    &lt;li&gt;You can freely add and remove OpenIDs from your associations, with one exception: the site won't let you delete your last OpenID if your account doesn't also have a password associated with it, to prevent you from locking yourself out.&lt;/li&gt;
    &lt;li&gt;While I decided that I didn't want Django People to become &lt;em&gt;yet another&lt;/em&gt; OpenID provider, I do want to give people the ability to use their profile page on the site as an OpenID - so that they can prove that they own it (see my &lt;a href="http://simonwillison.net/2008/Jan/7/projection/" title="Yahoo!, Flickr, OpenID and Identity Projection"&gt;recent post on identity projection&lt;/a&gt;). To that end, the new account settings page lets advanced OpenID users set up an &lt;code&gt;openid.server&lt;/code&gt; and &lt;code&gt;openid.delegate&lt;/code&gt; for their profile page, as described in &lt;a href="http://simonwillison.net/2006/Dec/19/openid/" title="How to turn your blog in to an OpenID"&gt;my blog entry&lt;/a&gt; from just over a year ago.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One caveat: the site only supports OpenID 1.1, at least for the moment. I had originally planned to go for OpenID 2.0, but demand was such that I decided to get what I had up and running rather than digging in to the OpenID 2.0 libraries.&lt;/p&gt;

&lt;h3&gt;Microformats&lt;/h3&gt;

&lt;p&gt;While I was messing around with OpenID, &lt;a href="http://notes.natbat.net/"&gt;Natalie&lt;/a&gt; was updating the site's templates to clean up the crufty code I'd introduced and add some microformatted goodness. The site now uses &lt;a href="http://microformats.org/wiki/hcard"&gt;hCard&lt;/a&gt; where you would expect it (country listing pages, skill listing pages and the &lt;a href="http://djangopeople.net/search/"&gt;new search interface&lt;/a&gt;) and the profile pages have been updated with a healthy dose of &lt;a href="http://microformats.org/wiki/xfn"&gt;XFN&lt;/a&gt; (just rel="me", since there isn't a relevant microformat for "people who live nearby") and &lt;a href="http://microformats.org/wiki/rel-tag"&gt;Rel-Tag&lt;/a&gt;. On &lt;a href="http://adactio.com/"&gt;Jeremy Keith&lt;/a&gt;'s suggestion, the profile pages also use &lt;a href="http://microformats.org/wiki/hresume"&gt;hResume&lt;/a&gt; - all the more reason to add the Django projects you've worked on to your profile's portfolio.&lt;/p&gt;

&lt;p&gt;As usual, post feedback and bug reports as comments on this entry.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django-people"&gt;django-people&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hcard"&gt;hcard&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hresume"&gt;hresume&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/identityprojection"&gt;identityprojection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microformats"&gt;microformats&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/reltag"&gt;reltag&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xfn"&gt;xfn&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="django-people"/><category term="hcard"/><category term="hresume"/><category term="identityprojection"/><category term="microformats"/><category term="openid"/><category term="python"/><category term="reltag"/><category term="xfn"/></entry><entry><title>Yahoo!, Flickr, OpenID and Identity Projection</title><link href="https://simonwillison.net/2008/Jan/7/projection/#atom-tag" rel="alternate"/><published>2008-01-07T23:33:39+00:00</published><updated>2008-01-07T23:33:39+00:00</updated><id>https://simonwillison.net/2008/Jan/7/projection/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="http://www.readwriteweb.com/archives/flickr_to_authenticate_openid.php"&gt;Via ReadWriteWeb&lt;/a&gt;, view source on &lt;a href="http://www.flickr.com/photos/simon/"&gt;a Flickr photostream page&lt;/a&gt; and search for "openid" and you'll be rewarded with the following snippet:&lt;/p&gt;

&lt;pre&gt;&lt;code class="html"&gt;&amp;lt;link rel="openid2.provider"
  href="https://open.login.yahooapis.com/openid/op/auth" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which means that Flickr pages will very soon be able to act as &lt;a href="http://openid.net/"&gt;OpenIDs&lt;/a&gt;. The provider isn't up and running just yet though; try authenticating with your Flickr OpenID on &lt;a href="http://jyte.com/auth/login"&gt;Jyte.com&lt;/a&gt; and you'll get the following message:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
Hey there! You have stopped by a bit sooner than we had expected. This feature is still being tested, so please check back in a few days.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The URL of the server is interesting as well: it suggests that Yahoo!'s OpenID support is designed from the start to apply to more than just Flickr. I wouldn't be at all surprised to see similar links start to crop up on all kinds of other Yahoo! properties - anything that has a page which can be considered to represent a user account. This would make a lot of sense, because &lt;strong&gt;OpenID is good for more than just authentication&lt;/strong&gt;. The OpenID protocol allows a user to assert ownership of a URL. This can be used for SSO-style authentication, but it can also be used to prove ownership of a specific account to some other service, a concept I've been calling &lt;em&gt;identity projection&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If users can easily project their Flickr, Upcoming or del.icio.us identities to other sites, developers can start to build all kinds of neat things. Mashups for one get a whole lot more interesting when new users can easily bring their existing profiles from other sites with them. With any luck we'll see Yahoo! start to adopt &lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt; for authenticated API calls (which is itself based in part on the &lt;a href="http://www.flickr.com/services/api/auth.spec.html"&gt;Flickr auth API&lt;/a&gt;) in the not too distant future, opening up even more possibilities.&lt;/p&gt;

&lt;p&gt;A common misconception about OpenID is that it's only really useful if users stick to using one identity. I'd be happy to see every one of my online profiles acting as an OpenID, not for SSO authentication (I'll pick one "primary" OpenID to use for that) but so that I can selectively cross-pollinate some of my profiles to new services.&lt;/p&gt;

&lt;p&gt;Back to Yahoo!, another interesting new URL is &lt;a href="https://me.yahoo.com/"&gt;https://me.yahoo.com/&lt;/a&gt;. Again, there's not much to see at the moment but it looks to me like this will become an endpoint for OpenID 2 directed identity. James Henstridge &lt;a href="http://blogs.gnome.org/jamesh/2007/10/23/openid-20/"&gt;provides a useful explanation here&lt;/a&gt;, but the short version is that you'll be able to enter "me.yahoo.com" in to an OpenID field on a site and have Yahoo! pick an obfuscated, unique OpenID for your interactions with that site. This protects your privacy by preventing anyone from outside of Yahoo! from correlating your behaviour across multiple OpenID-enabled services, similar to how Yahoo!'s current &lt;a href="http://developer.yahoo.com/auth/"&gt;BBAuth API&lt;/a&gt; provides applications with an opaque hash rather than a user's Yahoo! screen name.&lt;/p&gt;

&lt;p&gt;It looks like Yahoo! will only be supporting OpenID 2 and won't provide a fallback for OpenID 1.x consumers. This means you won't be able to use your Flickr OpenID on many existing consumer sites (including this blog), at least until they get around to updating their libraries. I expect Yahoo!'s implementation to be a major influence in encouraging OpenID 2 adoption.&lt;/p&gt;

&lt;p&gt;It's three weeks short of a year since I &lt;a href="http://simonwillison.net/2007/Jan/27/idproxy/"&gt;launched idproxy.net&lt;/a&gt;, which provides Yahoo! account holders with a third-party OpenID via the BBAuth API. I couldn't be happier to see Yahoo! taking steps towards cutting out the middle man.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bbauth"&gt;bbauth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flickr"&gt;flickr&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/identityprojection"&gt;identityprojection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oauth"&gt;oauth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid2"&gt;openid2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yahoo"&gt;yahoo&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="bbauth"/><category term="flickr"/><category term="identityprojection"/><category term="oauth"/><category term="openid"/><category term="openid2"/><category term="yahoo"/></entry></feed>