1
0
Fork 0
mirror of https://code.sup39.dev/repos/Wqawg synced 2024-12-27 15:54:51 +09:00
vervis/migrations
fr33domlover 37b3416a41 Support remote actors specifying 2 keys, and DB storage of these keys
It's now possible for activities we be attributed to actors that have more than
one key. We allow up to 2 keys. We also store in the DB. Scaling to support any
number of keys is trivial, but I'm limiting to 2 to avoid potential trouble and
because 2 is the actual number we need.

By having 2 keys, and replacing only one of them in each rotation, we avoid
race conditions. With 1 key, the following can happen:

1. We send an activity to another server
2. We rotate our key
3. The server reaches the activity in its processing queue, tries to verify our
   request signature, but fails because it can't fetch the key. It's the old
   key and we discarded it already, replaced it with the new one

When we use 2 keys, the previous key remains available and other servers have
time to finish processing our requests signed with that key. We can safely
rotate, without worrying about whether the user sent anything right before the
rotation time.

Caveat: With this feature, we allow OTHER servers to rotate freely. It's safe
because it's optional, but it's just Vervis right now. Once Vervis itself
starts using 2 keys, it will be able to rotate freely without race condition
risk, but probably Mastodon etc. won't accept its signatures because of the use
of 2 keys and because they're server-scope keys.

Maybe I can get these features adopted by the fediverse?
2019-02-04 19:38:50 +00:00
..
2016_08_04.model Complete DB migration list, allowing to upgrade 2016-08-04 running instance 2018-03-27 14:28:56 +00:00
2016_09_01_just_workflow.model Remove scope field from 2016_09_01 migration model, it didn't exist yet 2018-04-05 00:02:12 +00:00
2016_09_01_rest.model Complete DB migration list, allowing to upgrade 2016-08-04 running instance 2018-03-27 14:28:56 +00:00
2019_01_28_project_collabs.model Default roles for repos and turn user/anon collab tables into proj/repo fields 2019-01-29 22:24:32 +00:00
2019_02_03_verifkey.model Support remote actors specifying 2 keys, and DB storage of these keys 2019-02-04 19:38:50 +00:00