Software

Use your individual consumer @ area for Mastodon discoverability with the WebFinger Protocol with out internet hosting a server


Mastodon is a free, open-source social networking service that’s decentralized and distributed. It was created in 2016 as a substitute for centralized social media platforms corresponding to Twitter and Fb.

One of many key options of Mastodon is using the WebFinger protocol, which permits customers to find and entry details about different customers on the Mastodon community. WebFinger is a straightforward HTTP-based protocol that permits a consumer to find details about different customers or assets on the web through the use of their e-mail deal with or different figuring out info. The WebFinger protocol is essential for Mastodon as a result of it allows customers to search out and observe one another on the community, no matter the place they’re hosted.

WebFinger makes use of a “well-known” path construction when calling an area. Chances are you’ll be acquainted with the robots.txt conference. All of us simply agree that robots.txt will sit on the prime path of everybody’s area.

The WebFinger protocol is a straightforward HTTP-based protocol that permits a consumer or search to find details about different customers or assets on the web through the use of their e-mail deal with or different figuring out info. My is first title ultimately title .com, so…my private WebFinger API endpoint is right here https://www.hanselman.com/.well-known/webfinger

The thought is that…

  1. A consumer sends a WebFinger request to a server, utilizing the e-mail deal with or different figuring out info of the consumer or useful resource they’re attempting to find.

  2. The server seems up the requested info in its database and returns a JSON object containing the details about the consumer or useful resource. This JSON object is named a “useful resource descriptor.”

  3. The consumer’s shopper receives the useful resource descriptor and shows the data to the consumer.

The useful resource descriptor accommodates numerous varieties of details about the consumer or useful resource, corresponding to their title, profile image, and hyperlinks to their social media accounts or different on-line assets. It will possibly additionally embody different varieties of info, such because the consumer’s public key, which can be utilized to determine a safe reference to the consumer.

There’s a great explainer here as well. From that web page:

When somebody searches for you on Mastodon, your server might be queried for accounts utilizing an endpoint that appears like this:

GET https://${MASTODON_DOMAIN}/.well-known/webfinger?resource=acct:${MASTODON_USER}@${MASTODON_DOMAIN}

Observe that Mastodon consumer names begin with @ so they’re @username@someserver.com. Similar to twiter could be @shanselman@twitter.com I might be @shanselman@hanselman.com now!

So maybe https://www.hanselman.com/.well-known/webfinger?useful resource=acct:FRED@HANSELMAN.COM

Mine returns

{
"topic":"acct:shanselman@hachyderm.io",
"aliases":
[
"https://hachyderm.io/@shanselman",
"https://hachyderm.io/users/shanselman"
],
"hyperlinks":
[
{
"rel":"http://webfinger.net/rel/profile-page",
"type":"text/html",
"href":"https://hachyderm.io/@shanselman"
},
{
"rel":"self",
"type":"application/activity+json",
"href":"https://hachyderm.io/users/shanselman"
},
{
"rel":"http://ostatus.org/schema/1.0/subscribe",
"template":"https://hachyderm.io/authorize_interaction?uri={uri}"
}
]
}

This file needs to be returned as a mime kind of utility/jrd+json

My website is an ASP.NET Razor Pages website, so I simply did this in Startup.cs to map that well-known URL to a web page/route that returns the JSON wanted.

providers.AddRazorPages().AddRazorPagesOptions(choices =>
{
choices.Conventions.AddPageRoute("/robotstxt", "/Robots.Txt"); //i did this earlier than, not wanted
choices.Conventions.AddPageRoute("/webfinger", "/.well-known/webfinger");
choices.Conventions.AddPageRoute("/webfinger", "/.well-known/webfinger/{val?}");
});

then I made a webfinger.cshtml like this. Observe I’ve to double escape the @@ websites as a result of it is Razor.

@web page
@{
Format = null;
this.Response.ContentType = "utility/jrd+json";
}
{
"topic":"acct:shanselman@hachyderm.io",
"aliases":
[
"https://hachyderm.io/@@shanselman",
"https://hachyderm.io/users/shanselman"
],
"hyperlinks":
[
{
"rel":"http://webfinger.net/rel/profile-page",
"type":"text/html",
"href":"https://hachyderm.io/@@shanselman"
},
{
"rel":"self",
"type":"application/activity+json",
"href":"https://hachyderm.io/users/shanselman"
},
{
"rel":"http://ostatus.org/schema/1.0/subscribe",
"template":"https://hachyderm.io/authorize_interaction?uri={uri}"
}
]
}

This can be a static response, but when I used to be internet hosting pages for multiple individual I might need to take within the url with the consumer’s title, after which map it to their aliases and return these accurately.

Even simpler, you may simply use the JSON file of your individual Mastodon server’s webfinger response and SAVE IT as a static json file and replica it to your individual server!

So long as your server returns the best JSON from that well-known URL then it will work.

So that is my template https://hachyderm.io/.well-known/webfinger?resource=acct:shanselman@hachyderm.io from the place I am hosted now.

If you wish to get began with Mastodon, begin right here. https://github.com/joyeusenoelle/GuideToMastodon/ it seems like Twitter circa 2007 besides it is not owned by anybody and is predicated on net requirements like ActivityPub.

Hope this helps!




About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, advisor, father, diabetic, and Microsoft worker. He’s a failed stand-up comedian, a cornrower, and a e book creator.

facebook
twitter
subscribe
About   Newsletter

Internet hosting By
Hosted in an Azure App Service










Related Articles

Leave a Reply

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

Check Also
Close
Back to top button