Adding DID to RSS and Atom Feeds


Decentralized Identifiers (DID) is a World Wide Web Consortium (W3C) specification for, well, distributed identities. The idea is to have an identity that belongs to you and does not belong to any particular service or website.

“In contrast to typical, federated identifiers, DIDs have been designed so that they may be decoupled from centralized registries, identity providers, and certificate authorities. 

“Specifically, while other parties might be used to help enable the discovery of information related to a DID, the design enables the controller of a DID to prove control over it without requiring permission from any other party.”

In my work developing CList I want to enable content and messaging federation – so that people can follow and talk to each other – without being dependent on a specific platform. So I want people to be able to create and use DIDs to help them find and follow each other.

But how? None of the usual services really support DIDs. User identities in pretty much every platform you can think of are platform specific. It’s so pervasive that even the W3C has to define a type of DID, did:web, to correspond to a specific web server location. But even with this, most popular services won’t generate a DID for you (with the notable exception of Bluesky, which creates – but limits – user DIDs).

I approached this work in three major steps:

– first, I created a simple mechanism allowing people to create their own DIDs.

– next, I developed a way for people to add DIDs to their RSS feeds

– and finally, I wrote an RSS reader that detects these DIDs

Let’s look at each of them.

Creating the DID

A DID can be complex, but for our purposes we really don’t need a lot of complexity.  Let’s have a look at my DID:

https://kvstore.mooc.ca/users/downes/did.json

Yes, I’m sharing it with you. It’s a public document. But that’s OK – I can change it, remove it, whatever. And I control what does into it. Here are some relevant sections:

Context 

  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/jws-2020/v1"
  ],

Nothing fancy here. I’m declaring that I’m using the W3C definition of DIDs and I’m describing the security suite I’m using.

Also Known As

This is a way to link multiple DIDs together to form a single identity. I found it necessary to do this to allow for the use of the Bluesky DID as well as to support a did:key which allows me to sign comments, annotations or posts. I also use it to help me transfer my identioty from one website to another.

  "id": "did:web:kvstore.mooc.ca:users:downes",
  "alsoKnownAs": [
    "did:key:z6MktjWjn5QHWHN7chfryeYQ6CK5Efb9RWQMaz2Ed1jf92LE",
    "did:web:kvstore.mooc.ca:users:downes",
    "did:web:kvstore.downes.ca:users:downes",
"at://downes.bsky.social"
 ],

Verification Method

This allows me to use my DID to do two things:

  • “authentication” – proves I am who I say I am (login challenges)
  • “assertion” – proves I authored something (content signing)

Services

Here I list the services I use, and who I am on those services. It’s not all the services I use – just the ones I want to admit to publicly.

"service": [
    {
      "id": "did:web:kvstore.mooc.ca:users:downes#kvstore",
      "type": "KVStore",
      "serviceEndpoint": "https://kvstore.mooc.ca"
    },
    {
      "id": "did:web:kvstore.mooc.ca:users:downes#downes-mastodon-social",
      "type": "SocialWebAccount",
      "serviceEndpoint": "downes@mastodon.social"
    },
    {
      "id": "did:web:kvstore.mooc.ca:users:downes#oldaily-mastodon-social",
      "type": "SocialWebAccount",
      "serviceEndpoint": "oldaily@mastodon.social"
    },
    {
      "id": "did:web:kvstore.mooc.ca:users:downes#downes-cosocial-ca",
      "type": "SocialWebAccount",
      "serviceEndpoint": "downes@cosocial.ca"
    },
{ "id": "did:web:kvstore.mooc.ca:users:downes#11679714", "type": "Blog", "serviceEndpoint": "11679714" }, { "id": "did:web:kvstore.mooc.ca:users:downes#Downes-leftish-media", "type": "Blog", "serviceEndpoint": "Downes@leftish.media" } ]

The first service I use is the DID hosting service. I’m using the one attached to CList, which is kvstore.mooc.ca. I have also listed my three Mastodon accounts – two on mastodon.social and one on cosocial.ca. I also list my Blogger and WordPress accounts. I do not list my Bluesky account here; it goes up in the AlsoKnownAs section.

And that’s it! Now, if these services wanted, they could complete the circle by allowing me to record my DID on their services – they could then verify it against this file, see that I’ve declared the service, and we would have a nice distributed sort of identity federation.

But they don’t do that.

Adding DID to RSS Feeds

You can’t just toss a DID into an RSS feed and expect it to work. An RSS feed is a structured document intended to be machine-readible, so that your DID can be automatically extracted by a feed reader. 

After some consideration of alternatives, I decided to use the Atom author tag to do it, first, because the syntax is the same for both RSS and Atom, and second, because it allows me to place both the author’s name and the DID into the same context.

So here’s what they look like:

RSS:

Atom:

As you can see, I use the link tag, specifying both the author name and DID as the URL. Look up that URL, you see the DID I described in the previous section.

The WordPress Plugin

It’s easy for me to put my DID in my own RSS feeds, because I’m the person who creates them, using software that I wrote myself. But what about the rest of the world?

There’s a lot of RSS feeds I can’t fix, but as they say, 80% of the web runs on WordPress, and I can fix that. So (with the help of ChatGPT) I wrote a plugin that allows you to put your DID into your user profile, and which inserts it into your RSS and Atom feeds.

It doesn’t generate the DID – you need a DID generator for that (use CList, or Bluesky, or whatever). You will find a DID element when you edit the profile; put it in and everything is automatic after that.

Here’s more information about the plugin and a link where you can download it: https://clist.mooc.ca/wordpress/README.html You can find the source on GitHub: https://github.com/Downes/CList/tree/main/wordpress/author-did-feeds-v0.1.2/author-did-feeds

Adding DID to Mastodon

Mastodon doesn’t formally support DID, but it does allow you to put data into custom fields. Edit your profile, add a new custom field, and enter the data:

The DID URL does exceed the recommended 40 character limit, but there’s not much to be done about that. With luck, it will mostly be visible in any case. 

An RSS reader that Reads DIDs

In addition to connecting to various social network and content sharing services, CList contains an RSS reader. That means that if people have put their DID into their RSS feed, it’s possible to find them. 

I haven’t written this part yet, so I don’t know exactly how it’s going to work. But here are some potential uses I can put it to:

  • persistent author identity across multiple websites and services;
  • verification of authorship independently of a publishing platform;
  • linking posts to a broader decentralized identity infrastructure;
  • future support for signed posts or signed feeds;
  • decentralized federated annotation network; 
  • distinguishing between display names and machine-readable author identifiers.

There’s a lot we can do with this, but I wanted to get this part out there so people can think of the possibilities.



Source link

  • Related Posts

    Wellington Advocacy welcomes Patrick Weeks, Burson brings on Brian Pearl, Allan O’Dette now at Sussex Strategy Group

    This week’s movers on the government relations scene. Patrick Weeks (LinkedIn) Wellington Advocacy is welcoming Patrick Weeks to its team as a director. In a post made on LinkedIn, Wellington…

    All the Canadian Politics!

    Alberta NDP kicks off anti-separation door-knocking campaign Source link

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    You Missed

    Women’s One-Day Cup 2026, LAN-W vs WAR-W 32nd Match Match Report, May 13, 2026

    Women’s One-Day Cup 2026, LAN-W vs WAR-W 32nd Match Match Report, May 13, 2026

    Vance says ‘we have a lot of work to do’ after Trump’s comments about Americans’ finances

    Vance says ‘we have a lot of work to do’ after Trump’s comments about Americans’ finances

    This is what some of the world’s largest banks of malware look like stacked as hard drives

    This is what some of the world’s largest banks of malware look like stacked as hard drives

    Affordable housing waitlist hits record 14,000 households amid spur of new construction

    Affordable housing waitlist hits record 14,000 households amid spur of new construction

    CDC encourages cruise ship passengers to remain at Omaha facility

    CDC encourages cruise ship passengers to remain at Omaha facility

    Iran war live: Tehran slams ‘collusion’ as Netanyahu ‘secretly’ visits UAE | US-Israel war on Iran News

    Iran war live: Tehran slams ‘collusion’ as Netanyahu ‘secretly’ visits UAE | US-Israel war on Iran News