mirror of
https://codeberg.org/fediverse/fep.git
synced 2026-08-05 19:55:46 +00:00
Fep-2677 identifying the application actor (#188)
Reviewed-on: https://codeberg.org/fediverse/fep/pulls/188 Co-authored-by: Helge <helge.krueger@gmail.com> Co-committed-by: Helge <helge.krueger@gmail.com>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
---
|
||||
slug: "2677"
|
||||
authors: Helge <helge.krueger@gmail.com>
|
||||
status: DRAFT
|
||||
dateReceived: 2023-10-14
|
||||
---
|
||||
# FEP-2677: Identifying the Application Actor
|
||||
|
||||
## Summary
|
||||
|
||||
It is a common pattern in Fediverse applications to have a special
|
||||
actor of type Application. This is for example the actor at `https://mastodon.example/actor`
|
||||
for Mastodon or at `https://pleroma.example/internal/fetch` for Pleroma.
|
||||
This application actor can be fetched with an unsigned request, so it
|
||||
is possible to use it to fetch public keys.
|
||||
|
||||
The goal of this FEP is to provide an explicit mechanism of identifying
|
||||
the application actor, with the goal of making it usable for further tasks,
|
||||
e.g.
|
||||
|
||||
- Allowing for application to application communication by having
|
||||
application actor send activities to another application actor's inbox.
|
||||
- Having an object one can attach further information to. This means, one
|
||||
could attach a list of implemented FEPs to the application actor.
|
||||
|
||||
## Requirements
|
||||
|
||||
The key word "MUST" in this specification are to be interpreted as described in [RFC 2119].
|
||||
|
||||
Following [NodeInfo], see also [FEP-f1d5], a Fediverse application implementing this
|
||||
FEP, i.e. FEP-2677, MUST provide the well-known path `/.well-known/nodeinfo` and serve a document in JRD format [RFC 7033].
|
||||
This document MUST then contain a link with relation `https://purl.archive.org/funfedi/applicationActor`,
|
||||
whose link resolves to an actor of type `Application` (see [ActivityPub]). This actor MUST be retrievable with an unsigned HTTP request.
|
||||
|
||||
## Example
|
||||
|
||||
We will consider the server with domain `node.example`. This means that a request
|
||||
to `https://node.example/.well-known/nodeinfo` will resolve to
|
||||
|
||||
```json
|
||||
{
|
||||
"links": [
|
||||
{
|
||||
"rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
|
||||
"href": "https://node.example/nodeinfo/2.0"
|
||||
},
|
||||
{
|
||||
"rel": "https://purl.archive.org/funfedi/applicationActor",
|
||||
"href": "https://node.example/actor"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Next, a request to `https://node.example/actor` with accept header `application/activity+json`
|
||||
could return
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
"https://w3id.org/security/v1",
|
||||
],
|
||||
"id": "https://node.example/actor",
|
||||
"type": "Application",
|
||||
"inbox": "https://node.example/actor/inbox",
|
||||
"outbox": "https://node.example/actor/outbox",
|
||||
"publicKey": {
|
||||
"id": "https://node.example/actor#main-key",
|
||||
"owner": "https://node.example/actor",
|
||||
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\n....\n-----END PUBLIC KEY-----\n"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [ActivityPub] Christine Lemmer Webber, Jessica Tallon, [ActivityPub](https://www.w3.org/TR/activitypub/), 2018
|
||||
- [FEP-f1d5] CJ, silverpill, [NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md), 2023
|
||||
- [NodeInfo] [NodeInfo protocol 2.1](http://nodeinfo.diaspora.software/protocol.html)
|
||||
- [RFC 2119] S. Bradner, [Key words for use in RFCs to Indicate Requirement Levels](https://tools.ietf.org/html/rfc2119.html), 1997
|
||||
- [RFC 7033] P. Jones, G. Salgueiro, M. Jones, J. Smarr, [Webfinger](https://www.rfc-editor.org/rfc/rfc7033.html), 2013
|
||||
|
||||
## Copyright
|
||||
|
||||
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
||||
|
||||
To the extent possible under law, the authors of this Fediverse Enhancement Proposal have waived all copyright and related or neighboring rights to this work.
|
||||
Reference in New Issue
Block a user