ActivityPubにおけるpreferredUsernameの一意性

#1

ActivityPubの仕様によると、preferredUsernameのユニーク性は保証されない、となっています。
https://www.w3.org/TR/activitypub/#x4-1-actor-objects

preferredUsername

A short username which may be used to refer to the actor, with no uniqueness guarantees.

実際、Twitterのように、アカウント名を変更可能なものもあります。

一方、Mastodonでは(旧ドキュメントですが)WebFingerで用いるacct(preferredUsername@domain)のURIと、author / actorのURI、両方のアカウント識別子がユニークであることが求められると明記されています。
Account identifiers - Using a different domain name for Mastodon and the users it serves

Account identifiers

It is important to understand that for federation purposes, a user in Mastodon has two unique identifiers associated:

  • A webfinger acct: URI, used for discovery and as a verifiable global name for the user across Mastodon instances. In our example, our account’s acct: URI is acct:user@example.org
  • An author/actor URI, used in every other aspect of federation. This is the way in which users are identified in OStatus, the underlying protocol used for federation with other Mastodon instances. In our case, it is https://social.example.org/users/user . It is not strictly required to be an URL, but they are in Mastodon’s case to ease discovery of unknown remote accounts.

Both account identifiers are unique and required for Mastodon. An important risk if you set up your Mastodon instance incorrectly is to create two users (with different acct: URIs) with conflicting author/actor URIs .

こちらは、ActivityPubのissueで、この問題をとりあげたものです。

#2

昨日ちょっと話題になったので、ピックアップしておきます。

現状、Mastodonとの互換性を前提とする場合はacctがユニークであるとみなせますが、自身でactorを識別するコードを実装する際は、preferredUsernameが変更されうることを前提にした作りにしておかないと、面倒なことになるかもしれません。