投稿の転送(forwarding)
https://www.w3.org/TR/activitypub/#inbox-forwarding
forwarding とは
投稿元がアクセスできない受け取り手に、代わりに投稿を転送してあげるという仕様
たとえば、
アリスが「あけましておめでとう!」という投稿をすると、アリスのフォロワーであるボブとキャロルには、その投稿が到達する
それに対してボブが「今年もよろしく!」とリプライすると、アリスには投稿が到達する
しかし、キャロルがボブをフォローしていない場合は、キャロルはボブの投稿を見ることができない
この問題を緩和するのが forwarding
forwarding の流れ
ボブがアリスにリプライするとき、そのリクエストの cc に https://mastodon.wonderland/users/alice/followers という文字列を入れる
それを見たアリスは、「このリプライを https://mastodon.wonderland/users/alice/followers に転送しなければならない」と認識する
アリスは、https://mastodon.wonderland/users/alice/followers に含まれるところの キャロル にボブの投稿を転送する
キャロルはアリスからボブの投稿を受け取り、ボブの「今年もよろしく!」という投稿を閲覧できるようになる
forwarding の実際
forward される投稿には、JSON-LD署名が付与されている必要がある
リクエストの送信元と投稿主が異なるため、通常の投稿のように HTTP Signatures による検証では不十分であることが理由と考えられる
署名がない投稿は、多くの実装では無視される
type: Create の activity に JSON-LD署名 が付与されるかどうかは、実装によってまちまちだった
mastodon: JSON-LD署名 を付与する
hollo: JSON-LD署名 を付与する
misskey: JSON-LD署名 を付与しない
また、JSON-LD署名 の検証結果も、実装同士の組み合わせによってまちまちのようだった
mastodon の JSON-LD署名
hollo → 検証に成功(受け入れる)
misskey → 検証に成功(受け入れる)
hollo の ActorのDeleteアクティビティの署名はJSON-LD署名
mastodon → 検証に失敗(受け入れない)
misskey → そもそも検証してなさそう(受け入れる)
misskey の JSON-LD署名
そもそも misskey は投稿に署名しない
つまり、mastodon の投稿は大抵の実装で受け入れてもらえるが、他の実装の投稿については組み合わせによりそうという感じです
hr.icon
genya0407.icon mastodon / hollo / misskey 以外の実装でアカウントを持っておらず、特に pleroma / akkoma 系列の動作が確認できてないです
genya0407.icon misskey の投稿を hollo に forward した場合、hollo は署名なしの misskey 投稿を reject するのかと思いきや普通に表示できたので???と思っている
ログを見ると 401 でエラーにしているようなのだが、実際にはユーザーに見せているという謎の挙動だった
動作確認の方法が間違っている可能性もあるので後日また検証してみようと思います