Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

`keyId` is a problem.

General Discussion
5 3 0
  • 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

  • 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

    @jdt You're supposed to fetch the keyId first, then fetch its owner (or controller).
    But in practice its either /main-key (GoToSocial) or fragment ID, so it is indeed possible to save a HTTP request.

  • 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

    @jdt the fragment in a JSON-LD document IRI has a semantic meaning that goes back to RDF: https://www.w3.org/TR/rdf11-concepts/#section-fragID

    > a secondary resource that is usually a part of, view of, defined in, or described in the primary resource, and the precise semantics depend on the set of representations that might result from a retrieval action on the primary resource.

  • @jdt You're supposed to fetch the keyId first, then fetch its owner (or controller).
    But in practice its either /main-key (GoToSocial) or fragment ID, so it is indeed possible to save a HTTP request.

    @silverpill@mitra.social That makes sense. I guess I was getting a little bit spun around by the idea that the keyId is not the Actor id and thinking too hard about it.

  • @jdt the fragment in a JSON-LD document IRI has a semantic meaning that goes back to RDF: https://www.w3.org/TR/rdf11-concepts/#section-fragID

    > a secondary resource that is usually a part of, view of, defined in, or described in the primary resource, and the precise semantics depend on the set of representations that might result from a retrieval action on the primary resource.

    @mariusor@metalhead.club That's great context; thanks!


Gli ultimi otto messaggi ricevuti dalla Federazione
  • @mariusor@metalhead.club That's great context; thanks!

    read more

  • @silverpill@mitra.social That makes sense. I guess I was getting a little bit spun around by the idea that the keyId is not the Actor id and thinking too hard about it.

    read more

  • @jdt the fragment in a JSON-LD document IRI has a semantic meaning that goes back to RDF: https://www.w3.org/TR/rdf11-concepts/#section-fragID

    > a secondary resource that is usually a part of, view of, defined in, or described in the primary resource, and the precise semantics depend on the set of representations that might result from a retrieval action on the primary resource.

    read more

  • @jdt You're supposed to fetch the keyId first, then fetch its owner (or controller).
    But in practice its either /main-key (GoToSocial) or fragment ID, so it is indeed possible to save a HTTP request.

    read more

  • 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

    read more

  • @reiver I'd consider interoperating social networks to be "federated", but I know it's not a precise term. There are similar ambiguities with other commonly used terms: decentralization, server, node, instance, and so on. We have our personal definitions but find that others have a different mental model than ours. It might be interesting to have a collaborative social web glossary that captures the variations of how these terms are used.

    read more

  • @rimu@mastodon.nzoss.nz Definitely. Offloading the static assets to nginx is a big win. Varnish adds a layer of serving from memory that takes it up a notch. Like having your own Fastly pop.

    It does require some configuration nuance to be sure you aren't serving cached assets to the wrong connections (e.g., authenticated GET requests that shouldn't be shared beyond a specific session).

    read more

  • @eyeinthesky

    Only as a metaphor.

    Federation happens between servers / nodes, not between networks.

    read more
Post suggeriti
  • 0 Votes
    1 Posts
    10 Views
    How to Install #Pleroma on #Ubuntu #VPS (5 Minute Quick-Start Guide) This article provides a guide demonstrating how to install Pleroma on Ubuntu VPS.What is Pleroma?Pleroma is a free, open-source, self-hostable microblogging server that speaks the #ActivityPub federation protocol—so your users can interact with people on other #Fediverse platforms (e.g., Mastodon) while you keep full control over your server ...Continued 👉 https://blog.radwebhosting.com/how-to-install-pleroma-on-ubuntu-vps/?utm_source=mastodon&utm_medium=social&utm_campaign=mastodon.social #letsencrypt #selfhosting #selfhosted
  • #FediNews

    General Discussion fedinews activitypub
    1
    1
    0 Votes
    1 Posts
    9 Views
    #FediNews El crecimiento de #ActivityPub y la interoperabilidad: Continúan las discusiones en la comunidad y entre desarrolladores sobre la expansión del protocolo ActivityPub más allá de las redes sociales tradicionales, integrándose en plataformas de blogs (como WordPress) y otras herramientas. No ha habido un "gran anuncio" en los últimos días, pero sí un progreso constante en la adopción silenciosa de la tecnología.https://activitypub.news/ 
  • 0 Votes
    3 Posts
    21 Views
    @senesens We had a demo about this at a recent #FediForum Bring your own timeline algorithm by @mala https://spectra.video/w/xtZeTuwpYAqPszVBK1uULd
  • 0 Votes
    11 Posts
    66 Views
    @evan @phi > We have some ad hoc ways to move from one to the other, but they aren't built into the SMTP or IMAP specsyes they are, though? in IMAP, you can just copy your messages and folders from one inbox to another. in SMTP, we have email forwarding.using your own DNS name can make things easier, but the main challenge in fedi is that we don't have a common storage/access abstraction (equivalent to IMAP folders), and we don't recognize HTTP redirects (equivalent to SMTP forwarding).