First, preferredUsername is not a required property for an ActivityPub actor.
How does the proposal deals with this issue? The proposed property looks no different from preferredUsername
in that both the properties are optional.
ActivityPub mandates the use of the id
property unless the object is transient (which I think won’t be the case for actor objects) so I wonder if we can use it as the query target of the WebFinger resources, if an ecosystem churn is even worth. But I think this approach would still have a problem that it couldn’t be used for URIs that have no host
part like did:
URIs, which the proposal is able to solve.
Second, it becomes inconvenient to use subdomains or alternate domains for actor URLs. If the original WebFinger is evan@organization.example
, and the ActivityPub URL is https://social.organization.example/evan
, the Webfinger will be canonicalized to the longer evan@social.organization.example
.
The acct:evan@social.organization.example
URI can be canonicalized to acct:evan@organization.example
by making the WebFinger resource for the former URI return a JRD with its subject
member being the latter URI, which is allowed by Section 4.4.1 of RFC 7033 (WebFinger) as a means to express URIs in canonical form and that is how Mastodon handles canonicalization of acct:
URIs (reference).
Admittedly, one could argue that it’s “inconvenient” as it involves multiple WebFinger reources across the domains (though I think it’s natural for the application server at social.organization.example
to implement a WebFinger resource endpoint, to which the host of the canonical JRD subject organization.example
can simply redirect back), but I believe it would be nice to note that this is not impossible, at least.
Well, I’ve reached the reply limit so I’m going to edit this post instead of replying to relevant posts.
Unfortunately, the WebFinger RFC isn’t clear about the canonicalization process of JRD subjects. While the spec says that “The “subject” value returned by a WebFinger resource MAY differ from the value of the “resource” parameter used in the client’s request” in Section 4.4.1 as I mentioned earlier, it doesn’t specify any requirements on client’s behavior in that case.
Mastodon retries a WebFinger request against the new subject when the returned JRD subject value differs from the resource
parameter value of the request. This seems to be a commonsensical precaution against consistency/security issues, especially in case of a cross-domain canonicalization, but even the Security Considerations section of the spec (Section 9.4 in particular) doesn’t mention any verification mechanisms like that.
That being said, I suppose the specification of that process would deserve a separate FEP (or perhaps an addition to FEP-4adb (Dereferencing identifiers with webfinger)).
+1 for the name acct
, given that the proposed property is only intended for the userpart and host pairs, because WebFinger is a discovery mechanism for information of arbitrary URIs, not limited to acct:
URIs. Mastodon uses the same term for something similar in their client API (the acct
attribute of the Account
entity).
For the same reason, the terminology of “Webfinger address” introduced by the proposal to refer to “an email-address-like identity in the form user@activitypub.example
” doesn’t sound quite right to me. The protocol doesn’t define a syntax like user@activitypub.example
without the acct:
scheme, either.