I’ve been thinking about how to limit access to a website as painlessly as possible. I’m not talking about real security — just privacy on the order of Facebook’s “Friends and Friends of Friends” scheme.
There should be some kind of email address validation involved, but not account creation. OpenID is alright, but I have reservations about using one, true identity for everything.* Plus, maintaining permissions on OpenID takes about as long as creating a bunch of accounts anyway.
Taking a page from Google Docs, let’s start with sending invitations via email. You could also work in a “request invitation” form, moderated by the site owner. The invitation email contains a link with a hash, matched to the invitee’s email address. So it looks something like: example.com/ievSVfrMq5wzBlH1.
Henceforth, that link works as long as the site owner keeps that invitee. But when the link is used, the server records the visitor’s IP address. Any subsequent visits from that IP address no longer require the hash. From then on, at that location, visiting example.com without the hash works just fine.
So not only can return visitors access the site normally, you also have a running record of all the IPs each invitee whitelisted.
Yeah, IPs are easy to spoof. Yeah, if someone visits from, say, a public proxy or an airport WiFi, you have no idea who could be accessing the site.** But it’s still pretty good I think, as a password-less, somewhat validated mechanism; particularly if your audience isn’t very expansive or mobile.
*Granted, that’s exactly what happens when all your accounts are tied to the same email address.
**Periodically running whois on stored IPs would work. If you don’t like the location, delete the IP from the whitelist, and tar and feather the invitee who’s responsible.