IndieWeb

From Organic Design
Jump to: navigation, search

The IndieWeb (short for "independent web") is a movement that aims at making the web more independent and decentralised again with a focus on people using their own sites instead of walled gardens. The idea is that by using open standards, sites can all be a part of the same unified social network regardless of what software they use - even static HTML sites can be a part of the IndieWeb.

One important standard for the IndeWeb is to use bidirectional rel="me" links to prove that different sites are all referring to the same person. If one of the sites in the group is an IndieWeb authentication provider, then any sites that support IndieAuth can find the authentication provider and log the user in to the site. The authentication provider could be one of the OAuth silos like Twitter or Github, or it could be one of your own sites.

Implementing IndieAuth

You can implement IndieAuth yourself very easily, for example using the SelfAuth PHP library, and testing your site's IndieWeb auth capability at indielogin.com. First link all the sites that represent you together with rel="me" links - these are just normal links from one site or profile page to another, but with the rel="me" attribute in the link element.

Then in the site that you've chosen to be your IndieAuth provider, you can unpack the latest version of SelfAuth into the root of the domain for that site for example in a directory called auth, and making sure that requests to that directory are routed to it's index.php file. I had to use a Nginx rewrite rule in the site's server block for this as follows:

rewrite ^/auth/$ /auth/index.php last;


And then in the home page for the IndieAuth provider site, an invisible link in the HTML is required that links to the web location of SelfAuth library, in this case the auth directory, with a rel="authorization_endpoint" attribute so that IndieAuth consumers know what login URL to use.

<link rel="authorization_endpoint" href="https://organicdesign.nz/auth/" />

See also