@weiweiwei 我一直好奇,这如今哪边问题更大一些?是 misskey 的 activitypub 协议没做好,还是 mastodon 又额外设置了壁垒?
@fivestone @weiweiwei
之前开启了 AUTHORIZED_FETCH ,然后 misskey 实例就无法访问了。
Misskey 一开始是不支持 Sign Get Request,后来支持了,但设置中又j默认关闭。然后结果就是 Misskey 无法访问了。
因为这个原因,后来就将 AUTHORIZED_FETCH 关了。
刚刚看了一下,现在的 misskey 示例配置中例是默认开启 signToActivityPubGet 了。
https://github.com/misskey-dev/misskey/blob/af3258dc79488b73435819e7799eb1515f15a6aa/.config/example.yml#L185-L186
@bgme @weiweiwei 所以这个 Sign Get Request,目前算是 ActivityPub 的标准内容吗?or 只是 mastodon 设置的更高一层的壁垒?(for whatever security reason
@fivestone @weiweiwei ActivityPub 标准[1]里只是说:Servers SHOULD validate the content they receive to avoid content spoofing attacks. ,并没有规定具体的实现方法。
Mastodon 采取了 HTTP Signatures [2] 作为认证方式,但初期只是对 POST 这类涉及数据修改的请求签名,并没有对 GET 请求签名。
v3.x 版本引入了 Whitelist mode,对 GET 请求的鉴权也成为了必要,因此对 GET 请求也进行签名。
Misskey 虽然项目开始的比 Mastodon 早,但最开始并没有 Federation 功能,直至2018年才实现了 ActivityPub 协议实现了实例间 Federation。[3](Mastodon在2017年便发布了 1.1 版本)
梳理一下 HTTP signatures to all outgoing ActivityPub GET requests 的历史:
- Mastodon 加入 HTTP signatures to GET requests 的时间是2019年7月。[4]
- 2019年10月 Mastodon v3.0.0 发布。[5]
- 2020年10月 Misskey 也加入了 HTTP signatures to GET requests 的支持,但是 signToActivityPubGet 默认为 false。[6]
- 2022年12月 Misskey 才将 signToActivityPubGet 默认值由 false 改为 true。 [7]
2019年10月至2022年12月,在这长达三年的时间内,如果你的 Mastodon 实例开启了 AUTHORIZED_FETCH,那么便无法与 Misskey 实例互通。
[1] https://www.w3.org/TR/activitypub/#obj
[2] https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures
[3] https://misskey-hub.net/en/docs/misskey.html
[4] https://github.com/mastodon/mastodon/pull/11284
[5] https://github.com/mastodon/mastodon/releases/tag/v3.0.0
[6] https://github.com/misskey-dev/misskey/pull/6731
[7] https://github.com/misskey-dev/misskey/commit/3402131b7d3ea207e3db00a5472b0a204aebb2f3
@fivestone @bgme @weiweiwei 現在基本都是按mastodon標準實作了,不然mastodon會回覆signature錯誤。還有一個是digest,這也是mastodon特殊要求的