Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Put Bluesky DIDs and AP actor ids into alsoKnownAs in actor objects and DID docs #1331

Closed
Tracked by #1014
snarfed opened this issue Sep 14, 2024 · 6 comments
Closed
Tracked by #1014
Labels

Comments

@snarfed
Copy link
Owner

snarfed commented Sep 14, 2024

Inspired by a FediForum DID afterparty with @dmitrizagidulin @bnewbold @bumblefudge et al! We should:

  • Put a Bluesky account's DID into its bridged ActivityPub actor object
  • Put an ActivityPub actor id into its bridged Bluesky DID doc

...and then twist some client developer's arm into showing a special green check or something similar when it bidirectionally verifies this!

@bnewbold
Copy link

Some quick follow-on thoughts:

  • there is always a question of multiple or single/primary linkage. I don't have super strong thoughts but it does always come up and a clear answer/semantic would be good
  • DIDs are URIs, so they can be stuck directly in to alsoKnownAs lists. if you do that, you don't know the semantics of the DID when just looking at it, especially if there are multiple. In theory any/all DIDs could be resolved and the DID documents inspected to figure out what they support, but some DID resolution takes time and can fail, so it is nice to skip or only do one if possible. as a motivating case, consider viewing a list of dozens of accounts and wanting to render a badge for ones which have a linked DID for specific other protocol.
  • one possible pattern is to use a service identifier fragment like did:web:blah.example.com#atproto_pds: that gives you the DID itself, and you also know it is being included specifically to reference atproto, or a specific service
  • another pattern we use in atproto is that you can use an AT-URI, so at://did:web:blah.example.com; that also communicates "we are talking about an atproto identity/account", not just any DID (but the DID is still there and can be parsed out)
  • for atproto specifically, displaying handles is user-friendly, but requires an extra step of bi-directional resolution

@snarfed
Copy link
Owner Author

snarfed commented Sep 15, 2024

Great points @bnewbold, thank you!

To start, for just the identity mapping plumbing I think I can punt on multiple vs single and handles for now, just use AP actor ids and ATProto DIDs, and leave the Webfinger addresses and handles to the client(s).

re "what is this DID?", great point. fragment is ok but a bit awkward, at:// URI makes more sense to me at least, I'll probably go with that.

@snarfed snarfed added the now label Sep 15, 2024
@qazmlp
Copy link

qazmlp commented Sep 15, 2024

The at:// URI with DID makes the most sense to me too. Update propagation on fedi is not expected to be entirely reliable and the PDS could change, so in my eyes it's better to use the most stable identifier available here, even if the association is not necessarily permanent.

@snarfed
Copy link
Owner Author

snarfed commented Oct 2, 2024

Done! We now add native protocol user id to alsoKnownAs in AP actor objects and new DID docs. Example AP actor objects:

Backfilling existing DID docs is a separate question, low priority but I can try to get to it eventually. I've added it to #1014.

@snarfed snarfed closed this as completed Oct 2, 2024
@snarfed
Copy link
Owner Author

snarfed commented Oct 3, 2024

Example DID doc: https://web.plc.directory/did/did:plc:skzzh3r474qvgy2llwmt7wp6

  "alsoKnownAs": [
    "at://lawrenceevalyn.zirk.us.ap.brid.gy",
    "https://zirk.us/users/lawrenceevalyn"
  ]

@snarfed
Copy link
Owner Author

snarfed commented Oct 17, 2024

Ugh, looks like this is causing interop issues with some fediverse software: https://git.pleroma.social/pleroma/pleroma/-/issues/3336

@snarfed snarfed mentioned this issue Oct 17, 2024
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants