keyId is a problem.

Generally speaking, most Actors have a `keyId' that looks something like:

https://enigmatick.social/user/jdt#main-key

When an inbox POST arrives from an unknown user, we can chop off the bit including #main-key and we can pull the remaining URL as the Actor's ID.

But some implementations decided they should use /main-key instead. That indicates that the keyId format is unreliable and not well-specified. So I switched to deferring this header check for unknown Actors deeper into my ingestion pipeline so that I could retrieve the actor string from the object being sent. That works pretty well.

But GET requests. Like followers_synchronization. Dammit. There's no object to refer to. So we're back to parsing the keyId and hoping for meaning.

Out of 124,007 Actors in my database, 587 do not comply with the #main-key convention.

enigmatick=> select count(*) from actors where as_public_key->>'id' NOT LIKE '%#main-key';
count
-------
587
(1 row)

For full coverage, I need to accommodate /main-key and #key as well

#ActivityPub

0

If you have a fediverse account, you can quote this note from your own instance. Search https://enigmatick.social/objects/732d9395-ec4f-4d94-82bc-2e69c8ac31d7 on your instance and quote it. (Note that quoting is not supported in Mastodon.)