while doing a s2s Like
activity from scratch (in dash) e.g. peertube says ActivityPub signature could not be checked
and gnu social says Invalid actor.
How can I validate and diagnose the actor https://demo.mro.name/activitypub/u/alice/?
while doing a s2s Like
activity from scratch (in dash) e.g. peertube says ActivityPub signature could not be checked
and gnu social says Invalid actor.
How can I validate and diagnose the actor https://demo.mro.name/activitypub/u/alice/?
It might be that gnu social is expecting a Person type actor, not Service.
it fails regardless.
@nutomic @grishka @trwnh @heluecht @WisTex you all implemented servers I guess â how did you validate actors for federation? Is there something comparable the W3C HTML validator or the feed validators?
(And: Who else could have an interest in such and could possibly fund?)
I guess the issues you bump into are universal struggles that any new would-be fedi dev encounters. Unfortunately the onboarding to the fediverse is still too hard, and we should continue to improve it to have more people attracted to fedi and create / integrate more different apps.
I donât know if youâve seen the Guide for new ActivityPub implementers?
This long document with a ton of links is also a Wiki post that anyone can edit and update with stuff that is missing in the guidelines. If you find that important stuff is missing it would be great to update in this wiki. Hopefully at a certain time we can lift it from its current location and elaborate it into a comprehensive handbook of sorts, and crowdsource further from there to keep it up-to-date.
Hi @aschrijver, I had a glimpse at it before. Itâs very verbose (3500+ words) but terse on validation: Guide for new ActivityPub implementers
It doesnât mention any aid to validate, right? Verbosity without reliable aid makes onboarding a horror, frankly. I found most documentation seen so far as useful to a newcomer as the Oxford Dictionary for a non-english-speaker to ask for the daytime. Work it through in total and get a doctoral degree after decades.
Donât want to go OT on this thread, but fully agreed it is a horror show. One of the major challenges I see for the Fediverse that hampers adoption and innovation.
nope actually⊠hehe
validation is a best-effort kind of thing. what you put out there will end up getting used entirely as the consumer sees fit. all you can really do is make sure that you are using the correct semantics.
put another way: any actor document is âvalidâ until it isnât.
taking a quick look i see the following issues:
[]
attachments
should be attachment
if it is includednow, youâre probably wondering, how would you have known these things beforehand? you canât really. all you can do is read the spec and follow it as you see fit.
if you have an example consumer in mind, then you can start to test against that consumerâs expectations.
this sounds like peertube is expecting http signatures on incoming Like activities?
which one (seriously)?
indeed. Feel free to play with https://codeberg.org/mro/activitypub/src/branch/master/like.sh it has no dependencies.
In my experience, its easier to first work on federation only between instances of your own project. This makes testing much easier, and allows you to make breaking changes while you figure things out.
Later you can work on federation with other projects. For that its easiest to run an instance of the other project yourself (or know someone who does). Then the admin should be able to tell from logs what exactly is going wrong. Some projects give better error messages than others, so if Peertube isnt working well, try federating with something else first.
for the documents you send out:
for how to send: thereâs http signatures, but iirc itâs a draft and really youâll have to figure out how to get it working with various projects. if you can get it working with mastodon you can probably get it working with others (unless they have their own expectations)
Alice just seems to have liked https://tube.network.europa.eu/w/aTx3DYwH1km2gTEn9gKpah
Hi @WisTex,
with âvalidateâ I mean syntactical conformance in the sense of XML schema validation. Not authentication nor authorisation.
I just tested importing your test actor against GNU social v3, and it worked smoothly. If you tested it with version 2, we havenât updated the AP plugin for v2 in a while and it has a couple of known bugs and limitations, itâs no longer in active developmentâŠ
I still get
[{"error":"Invalid actor."}]
when doing a dislike
of https://gnusocial.net/notice/11921862 with as2.ml#L295 namely the actor
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1"
],
"id": "https://demo.mro.name/seppo/activitypub/",
"type": "Person",
"following": "https://demo.mro.name/seppo/activitypub/following.json",
"followers": "https://demo.mro.name/seppo/activitypub/followers.json",
"liked": "https://demo.mro.name/seppo/activitypub/liked.json",
"inbox": "https://demo.mro.name/seppo/seppo.cgi/activitypub/inbox.json",
"outbox": "https://demo.mro.name/seppo/activitypub/outbox.json",
"preferredUsername": "demo",
"name": "#Seppo! â self-reliantly posting on the #Fediverse",
"summary": "some longer text\nthat may span mul-\ntiple lines",
"publicKey": {
"id": "https://demo.mro.name/seppo/activitypub/#main-key",
"owner": "https://demo.mro.name/seppo/activitypub/",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1zzfMMOSi9JwQWSL5Mls\nnN1sPck+6Ve4eWmcyce4DIs472MORs46WcDsb9xtFTyI/UgPVh8kl66ilNDRXrCD\nYPbk04o18nrWOSk5XYVEOcj5zxO0GCqXI5ZdhNiugsumdvAOB5zSZp27Vc4MlOfb\nh76eaDhVX8TBJdRkOe/tfH6r5vENBaudL4vtDuWoFbAjdfup0f9GJqJbf7gwMPoq\nSGbvjThhrJ41VsTQjmPsQDaOQ5MDnrwkDJPQtKgGTgTiAThcppgTCljtCdnhBls7\nlWBPMcetsIyeR2h7WC71BA6QqltEM/RVBeET4CcajWzvoEoUdD54Lm+6U8saazzb\nDQIDAQAB\n-----END PUBLIC KEY-----\n"
},
"attachment": [
{
"name": "Generator",
"value": "seppo.app",
"type": "PropertyValue"
}
]
}
My question is still: why, how can I comply?
Or: what message id should I test against?
The instance gnusocial.net runs GNU social version 2. If you want to test with GNU social v3, you will have to deploy your own local instance. Youâll find instructions to do it at https://gnusocial.rocks .