💡 WebFinger Lookup

WebFinger (RFC7033)[1] allows to resolve names like alice@example.org to the ActivityPub Actor Profile[2] or a human readable web page.

The http GET request to https://example.org/.well-known/webfinger?resource=acct:alice@example.org must respond with the proper JSON Resource Descriptor[3] document.

#Seppo! sets this up automatically for Apache webservers and one Webfinger address per domain.

Advanced setup

If you want multiple addresses on one domain (with a #Seppo! each),

  1. the addresses (alice@example.org) must be distinct,
  2. the <webroot>/.well-known/webfinger/.htaccess must dispatch accordingly.

This involves manual action, because #Seppo! never writes files outside it's directory (except updating the symlink below and only if it is in fact a symlink).

To achieve this, replace the symlink <webroot>/.well-known/webfinger/.htaccess with the content of all the local .well-known/webfinger/.htaccess files from each #Seppo! installation, e.g.:

$ cd <webroot>/.well-known/webfinger/
$ mv .htaccess .htaccess.bak
$ cat ../../*/.well-known/webfinger/.htaccess > .htaccess

The resulting <webroot>/.well-known/webfinger/.htaccess may look something like this:

# https://seppo.social/S1002
RewriteEngine On

RewriteCond %{QUERY_STRING} (?i)^(.+?&)?resource=acct:alice@(example\.com)$
RewriteRule ^$ https://%2/alice/.well-known/webfinger/index.jrd [qsdiscard,last,redirect=seeother]

RewriteCond %{QUERY_STRING} (?i)^(.+?&)?resource=acct:bob@(.+)$
RewriteRule ^$ https://%2/bob/.well-known/webfinger/index.jrd [qsdiscard,last,redirect=seeother]

There are sample webserver configs in contrib/etc/

* * *

Footnotes

  1. WebFinger (RFC7033), back^
  2. ActivityPub Actor Profile, back^
  3. JSON Resource Descriptor, back^