originがAサーバの投稿を、Bサーバの人がリノートして、それを見てCサーバの人がリノートした場合、
1. Cサーバ→Bサーバの通信は発生する?
2. Cサーバ→Aサーバの通信は発生する?
3. Bサーバ→Aサーバの通信は発生する?
4. AサーバがCサーバをブロックしていた場合、AサーバはCサーバの人がリノートしたことを知ることができる?
Conversation
Notices
-
Embed this notice
くっしー:sabakan: (kussy_tessy@d.kg-misskey.net)'s status on Wednesday, 28-Feb-2024 17:41:08 JST くっしー:sabakan:
-
Embed this notice
くっしー:sabakan: (kussy_tessy@d.kg-misskey.net)'s status on Wednesday, 28-Feb-2024 17:41:08 JST くっしー:sabakan:
ActivityPub分からん。
-
Embed this notice
のえる (noellabo@fedibird.com)'s status on Wednesday, 28-Feb-2024 17:41:08 JST のえる
@kussy_tessy 署名付きリクエスト(Fetch)しか受け付けない設定のサーバと、自由にFetchできるサーバで異なります。
BサーバからAnnounceアクティビティがフォロワーおよび対象の投稿のAサーバに配送される
Aサーバは、自分のサーバに対象投稿があるので、Announceアクティビティをリノートやブーストとして解釈し、自分のサーバの投稿主にリノート・ブーストされたよって通知します。
Cサーバにフォロワーがいた場合、もともと対象の投稿を受け取っていれば、Announceアクティビティをリノートやブーストとして解釈するだけです。
もともと対象の投稿を受け取っていなかった場合、Announceアクティビティで指し示されている対象投稿をFetchする処理が入り、これに成功すればリノートやブーストとして解釈されます。
Fetchの際、Mastodonでは、どのアクターがリクエストしているのか署名します。
AサーバがCサーバをブロックしている場合、署名つきのリクエストであればブロック対象サーバがリクエストしてきていることを知ることができるので、これを拒否できますが、実際にその判定を行うかどうかはサーバの設定によります。
MastodonではAuthorized Fetchです。
-
Embed this notice
のえる (noellabo@fedibird.com)'s status on Wednesday, 28-Feb-2024 17:44:58 JST のえる
@kussy_tessy ほんで、署名を要求されていない場合はリノート・ブーストできます。
このとき、Cサーバから対象の投稿のサーバであるAサーバへAnnounceアクティビティが飛びます。
AサーバはCサーバをブロックしていれば、これを受け付けずに捨てるハズです。そうすると、Aサーバの対象の投稿主は、リノート・ブーストの通知を受け取ることができない、ということになるかと思います。
ブロックが期待通りの効果を発揮するためには、Aサーバが署名付きリクエストを必須としてCサーバからのリクエストを拒否する必要があります。
しかし、署名付きを必須とすると、署名付きリクエストを行わないサーバから何もFetchできなくなったり、連合リレーに参加できなくなるので、通常は必須に設定されていません。
-
Embed this notice
のえる (noellabo@fedibird.com)'s status on Wednesday, 28-Feb-2024 17:58:51 JST のえる
@kussy_tessy Misskeyがリクエスト時に署名する設定はこれ(デフォルト有効)
https://github.com/misskey-dev/misskey/blob/664aeb3ced65f3911c8a21c2d5ffbd1035aec31a/.config/example.yml#L270-L271リクエスト・Fetchされた側が署名をみてるかどうかはわかっていないので、詳しい人にきいてみて。
-
Embed this notice
くっしー:sabakan: (kussy_tessy@d.kg-misskey.net)'s status on Wednesday, 28-Feb-2024 18:06:37 JST くっしー:sabakan:
@noellabo@fedibird.com
Aの人「a」
Bの人「aをブーストする」
B鯖→各鯖「aをannounceしたで」
A鯖「分かった」
C鯖「aってどれ?」
→知ってたわ
C鯖→A鯖「aをannounceしたで」
→なにそれ? fetchするわ
C鯖→A鯖「aください」
ってやりとりが発生するって理解で合ってますか?
で、このとき署名付きを必須とすると、
C鯖→A鯖「aください」
A鯖「あんた誰?知らん」
となりブースト失敗。
署名付きでも、A鯖がC鯖をブロックしていた場合
C鯖「C鯖です。aをください」
A鯖「嫌だ」
となりブースト失敗になるってことですか?In conversation permalink -
Embed this notice
のえる (noellabo@fedibird.com)'s status on Wednesday, 28-Feb-2024 18:06:37 JST のえる
@kussy_tessy たぶんそれであってる。
あとは、ブロックされているC鯖の立場で、署名つけたりつけなかったりのリクエストをA鯖に実際に投げてみるとわかるかと思います。
In conversation permalink
-
Embed this notice