Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Technical Discussion
  3. **Can WebFinger resolve `subject` to a different domain?**

**Can WebFinger resolve `subject` to a different domain?**

Scheduled Pinned Locked Moved Technical Discussion
activitypubwebfinger
19 Posts 5 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • julian@activitypub.spaceJ This user is from outside of this forum
    julian@activitypub.spaceJ This user is from outside of this forum
    julian@activitypub.space
    wrote last edited by
    #1

    Can WebFinger resolve subject to a different domain?

    My immediate assumption is yes, it can, because someone may use a specific domain merely as a gateway, and point to a different domain for resolution.

    e.g. https://activitypub.directory/.well-known/webfinger?resource=acct:julian@activitypub.space (note the different TLD)

    Resolving to:

    {"subject":"acct:julian@activitypub.space","aliases":["https://activitypub.space/uid/1","https://activitypub.space/user/julian"],"links": ...

    However, this is a potential security issue because said directory could then poison the resulting data, especially if cached by a user of that webfinger directory.

    Am I wrong about that? In the meantime I've updated NodeBB's code to strictly enforce webfinger lookups so if a response subject has a different hostname, then the webfinger query result is considered invalid.

    wronglang@bayes.clubW 1 Reply Last reply
    1
    0
    • julian@activitypub.spaceJ julian@activitypub.space

      Can WebFinger resolve subject to a different domain?

      My immediate assumption is yes, it can, because someone may use a specific domain merely as a gateway, and point to a different domain for resolution.

      e.g. https://activitypub.directory/.well-known/webfinger?resource=acct:julian@activitypub.space (note the different TLD)

      Resolving to:

      {"subject":"acct:julian@activitypub.space","aliases":["https://activitypub.space/uid/1","https://activitypub.space/user/julian"],"links": ...

      However, this is a potential security issue because said directory could then poison the resulting data, especially if cached by a user of that webfinger directory.

      Am I wrong about that? In the meantime I've updated NodeBB's code to strictly enforce webfinger lookups so if a response subject has a different hostname, then the webfinger query result is considered invalid.

      wronglang@bayes.clubW This user is from outside of this forum
      wronglang@bayes.clubW This user is from outside of this forum
      wronglang@bayes.club
      wrote last edited by
      #2

      @julian just out of curiosity is it related to this funny looking thing?

      https://wrong.webfinger-canary.fietkau.software/canary

      julian@activitypub.spaceJ 1 Reply Last reply
      0
      • wronglang@bayes.clubW wronglang@bayes.club

        @julian just out of curiosity is it related to this funny looking thing?

        https://wrong.webfinger-canary.fietkau.software/canary

        julian@activitypub.spaceJ This user is from outside of this forum
        julian@activitypub.spaceJ This user is from outside of this forum
        julian@activitypub.space
        wrote last edited by
        #3

        @wronglang@bayes.club actually, no! That's a different Julian: @julian@fietkau.social <img class="not-responsive emoji" src="https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f606.png?v=c7cc56fe415" title="😆" />

        But it seems we have thought about the same problem.

        julian@activitypub.spaceJ 1 Reply Last reply
        0
        • julian@activitypub.spaceJ julian@activitypub.space

          @wronglang@bayes.club actually, no! That's a different Julian: @julian@fietkau.social <img class="not-responsive emoji" src="https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f606.png?v=c7cc56fe415" title="😆" />

          But it seems we have thought about the same problem.

          julian@activitypub.spaceJ This user is from outside of this forum
          julian@activitypub.spaceJ This user is from outside of this forum
          julian@activitypub.space
          wrote last edited by
          #4

          ... but it is great that you posted it! You've shared a common use-case for a webfinger resolution to a different domain... what @julian@fietkau.social calls the split-domain.

          So in that case, a blanket rejection of a different domain isn't the right approach.

          1 Reply Last reply
          1
          0
          • relay@relay.argentwolf.orgR relay@relay.argentwolf.org shared this topic
          • julian@fietkau.socialJ This user is from outside of this forum
            julian@fietkau.socialJ This user is from outside of this forum
            julian@fietkau.social
            wrote last edited by
            #5

            @julian@activitypub.space @wronglang Only kind of – I've never considered the implications of a server resolving a WebFinger query for a user on a different origin. At a glance I'm not sure if it solves more problems than it introduces.

            What we do have is WebFinger results linking to ActivityPub actors on a different domain. Fun for things like static site redirects: https://www.hanselman.com/blog/use-your-own-user-domain-for-mastodon-discoverability-with-the-webfinger-protocol-without-hosting-a-server And it enables split-domain setups if the ActivityPub domain delegates its WebFinger lookups back to the WebFinger server.

            julian@activitypub.spaceJ 1 Reply Last reply
            0
            • julian@fietkau.socialJ julian@fietkau.social

              @julian@activitypub.space @wronglang Only kind of – I've never considered the implications of a server resolving a WebFinger query for a user on a different origin. At a glance I'm not sure if it solves more problems than it introduces.

              What we do have is WebFinger results linking to ActivityPub actors on a different domain. Fun for things like static site redirects: https://www.hanselman.com/blog/use-your-own-user-domain-for-mastodon-discoverability-with-the-webfinger-protocol-without-hosting-a-server And it enables split-domain setups if the ActivityPub domain delegates its WebFinger lookups back to the WebFinger server.

              julian@activitypub.spaceJ This user is from outside of this forum
              julian@activitypub.spaceJ This user is from outside of this forum
              julian@activitypub.space
              wrote last edited by
              #6

              @julian@fietkau.social the only way I can think of it conceivably working is if Webfinger(domain A) » Account (domain B) » name@domainA

              So, a two-way back-reference.

              1 Reply Last reply
              1
              0
              • evan@cosocial.caE This user is from outside of this forum
                evan@cosocial.caE This user is from outside of this forum
                evan@cosocial.ca
                wrote last edited by
                #7

                @julian so, here's what RFC 7033 says:

                "The host to which a WebFinger query is issued is significant. If the query target contains a "host" portion (Section 3.2.2 of RFC 3986), then the host to which the WebFinger query is issued SHOULD be the same as the "host" portion of the query target, unless the client receives instructions through some out-of-band mechanism to send the query to another host. "

                evan@cosocial.caE julian@activitypub.spaceJ 2 Replies Last reply
                0
                • evan@cosocial.caE evan@cosocial.ca

                  @julian so, here's what RFC 7033 says:

                  "The host to which a WebFinger query is issued is significant. If the query target contains a "host" portion (Section 3.2.2 of RFC 3986), then the host to which the WebFinger query is issued SHOULD be the same as the "host" portion of the query target, unless the client receives instructions through some out-of-band mechanism to send the query to another host. "

                  evan@cosocial.caE This user is from outside of this forum
                  evan@cosocial.caE This user is from outside of this forum
                  evan@cosocial.ca
                  wrote last edited by
                  #8

                  @julian

                  " If the query target does not contain a "host" portion, then the client chooses a host to which it directs the query using additional information it has."

                  evan@cosocial.caE 1 Reply Last reply
                  0
                  • evan@cosocial.caE evan@cosocial.ca

                    @julian

                    " If the query target does not contain a "host" portion, then the client chooses a host to which it directs the query using additional information it has."

                    evan@cosocial.caE This user is from outside of this forum
                    evan@cosocial.caE This user is from outside of this forum
                    evan@cosocial.ca
                    wrote last edited by
                    #9

                    @julian so, I read that as "You should use the hostname from the webfinger unless you don't want to or it's not there." Your directory idea sounds fine. I could see using it as a high-performance cache, for example.

                    1 Reply Last reply
                    0
                    • evan@cosocial.caE evan@cosocial.ca

                      @julian so, here's what RFC 7033 says:

                      "The host to which a WebFinger query is issued is significant. If the query target contains a "host" portion (Section 3.2.2 of RFC 3986), then the host to which the WebFinger query is issued SHOULD be the same as the "host" portion of the query target, unless the client receives instructions through some out-of-band mechanism to send the query to another host. "

                      julian@activitypub.spaceJ This user is from outside of this forum
                      julian@activitypub.spaceJ This user is from outside of this forum
                      julian@activitypub.space
                      wrote last edited by
                      #10

                      @evan@cosocial.ca boy, that second half does a bit of heavy lifting doesn't it <img class="not-responsive emoji" src="https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f63c.png?v=c7cc56fe415" title="😼" />

                      1 Reply Last reply
                      1
                      0
                      • julian@fietkau.socialJ This user is from outside of this forum
                        julian@fietkau.socialJ This user is from outside of this forum
                        julian@fietkau.social
                        wrote last edited by
                        #11

                        @julian@activitypub.space Current split-domain setups (Mastodon, GTS etc) do the two-way verification like this: the domain A WebFinger result has a rel="self" ActivityPub link pointing to the actor on domain B, the domain B WebFinger query for user@domainB returns a result with subject: user@domainA. The actor document doesn't need to do anything special.

                        That said, FEP-2c59 has seen some uptake since I wrote @canary. I should update the text some time to reference it.

                        julian@activitypub.spaceJ 1 Reply Last reply
                        0
                        • evan@cosocial.caE This user is from outside of this forum
                          evan@cosocial.caE This user is from outside of this forum
                          evan@cosocial.ca
                          wrote last edited by
                          #12

                          @julian srsly

                          1 Reply Last reply
                          0
                          • benpate@mastodon.socialB This user is from outside of this forum
                            benpate@mastodon.socialB This user is from outside of this forum
                            benpate@mastodon.social
                            wrote last edited by
                            #13

                            @julian

                            I believe there was a questionably named “WebFist” protocol that allowed cross-server WebFinger.

                            https://indieweb.org/Webfist

                            julian@activitypub.spaceJ 1 Reply Last reply
                            0
                            • benpate@mastodon.socialB benpate@mastodon.social

                              @julian

                              I believe there was a questionably named “WebFist” protocol that allowed cross-server WebFinger.

                              https://indieweb.org/Webfist

                              julian@activitypub.spaceJ This user is from outside of this forum
                              julian@activitypub.spaceJ This user is from outside of this forum
                              julian@activitypub.space
                              wrote last edited by
                              #14

                              @benpate@mastodon.social ROFL oh dear

                              1 Reply Last reply
                              1
                              0
                              • julian@fietkau.socialJ julian@fietkau.social

                                @julian@activitypub.space Current split-domain setups (Mastodon, GTS etc) do the two-way verification like this: the domain A WebFinger result has a rel="self" ActivityPub link pointing to the actor on domain B, the domain B WebFinger query for user@domainB returns a result with subject: user@domainA. The actor document doesn't need to do anything special.

                                That said, FEP-2c59 has seen some uptake since I wrote @canary. I should update the text some time to reference it.

                                julian@activitypub.spaceJ This user is from outside of this forum
                                julian@activitypub.spaceJ This user is from outside of this forum
                                julian@activitypub.space
                                wrote last edited by
                                #15

                                @julian@fietkau.social thanks for summarizing the split domain dance for me.

                                Assuming this is how your canary is set up?

                                julian@fietkau.socialJ 1 Reply Last reply
                                0
                                • julian@activitypub.spaceJ julian@activitypub.space

                                  @julian@fietkau.social thanks for summarizing the split domain dance for me.

                                  Assuming this is how your canary is set up?

                                  julian@fietkau.socialJ This user is from outside of this forum
                                  julian@fietkau.socialJ This user is from outside of this forum
                                  julian@fietkau.social
                                  wrote last edited by
                                  #16

                                  @julian@activitypub.space Yep! Compare

                                  https://correct.webfinger-canary.fietkau.software/.well-known/webfinger?resource=acct:canary@correct.webfinger-canary.fietkau.software

                                  and

                                  https://wrong.webfinger-canary.fietkau.software/.well-known/webfinger?resource=acct:canary@wrong.webfinger-canary.fietkau.software

                                  Note the self link and the subject. In a split-domain setup, the WebFinger results for both hostnames are identical, which is why server software often simply issues an HTTP redirect for ease of implementation.

                                  For clarity, I didn't invent this, Mastodon came up with it (and respects it for profile views). I noticed while setting up earlier versions of @DailyRucks that Misskey does not. And so @canary was born. 😉

                                  julian@fietkau.socialJ 1 Reply Last reply
                                  0
                                  • julian@fietkau.socialJ julian@fietkau.social

                                    @julian@activitypub.space Yep! Compare

                                    https://correct.webfinger-canary.fietkau.software/.well-known/webfinger?resource=acct:canary@correct.webfinger-canary.fietkau.software

                                    and

                                    https://wrong.webfinger-canary.fietkau.software/.well-known/webfinger?resource=acct:canary@wrong.webfinger-canary.fietkau.software

                                    Note the self link and the subject. In a split-domain setup, the WebFinger results for both hostnames are identical, which is why server software often simply issues an HTTP redirect for ease of implementation.

                                    For clarity, I didn't invent this, Mastodon came up with it (and respects it for profile views). I noticed while setting up earlier versions of @DailyRucks that Misskey does not. And so @canary was born. 😉

                                    julian@fietkau.socialJ This user is from outside of this forum
                                    julian@fietkau.socialJ This user is from outside of this forum
                                    julian@fietkau.social
                                    wrote last edited by
                                    #17

                                    @julian@activitypub.space Here's Mastodon's server admin documentation for the feature: https://docs.joinmastodon.org/admin/config/#web_domain And here's GoToSocial's: https://docs.gotosocial.org/en/latest/advanced/host-account-domain/

                                    Notably, everyone so far other than Takahē treats this as a server-level configuration, when it would work perfectly fine as a per-account setting. I've had a FediForum demo titled “None of you have any idea how close we already are to custom handle domains in profile settings” drafted in my head for years, I just can't find the time to put it together.

                                    julian@activitypub.spaceJ 1 Reply Last reply
                                    0
                                    • julian@fietkau.socialJ julian@fietkau.social

                                      @julian@activitypub.space Here's Mastodon's server admin documentation for the feature: https://docs.joinmastodon.org/admin/config/#web_domain And here's GoToSocial's: https://docs.gotosocial.org/en/latest/advanced/host-account-domain/

                                      Notably, everyone so far other than Takahē treats this as a server-level configuration, when it would work perfectly fine as a per-account setting. I've had a FediForum demo titled “None of you have any idea how close we already are to custom handle domains in profile settings” drafted in my head for years, I just can't find the time to put it together.

                                      julian@activitypub.spaceJ This user is from outside of this forum
                                      julian@activitypub.spaceJ This user is from outside of this forum
                                      julian@activitypub.space
                                      wrote last edited by
                                      #18

                                      > @julian@fietkau.social said:
                                      >
                                      > Notably, everyone so far other than Takahē treats this as a server-level configuration, when it would work perfectly fine as a per-account setting.

                                      oooooooooh, now you have my attention.

                                      1 Reply Last reply
                                      1
                                      0
                                      • julian@fietkau.socialJ This user is from outside of this forum
                                        julian@fietkau.socialJ This user is from outside of this forum
                                        julian@fietkau.social
                                        wrote last edited by
                                        #19

                                        @julian@activitypub.space Here's what Takahē has to say on the subject: https://docs.jointakahe.org/en/latest/domains/

                                        Even they don't go all the way, they “only” let server admins add a selection of WebFinger domains for users to choose from.

                                        So what if we put a “handle domain” field into people's account settings, let them enter whatever they want, and on submission we test whether that domain's WebFinger query for the username in question returns a valid result pointing back to our local actor?

                                        I honestly think this would work.

                                        1 Reply Last reply
                                        0

                                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                        With your input, this post could be even better 💗

                                        Register Login
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes


                                        • Login

                                        • Don't have an account? Register

                                        • Login or register to search.
                                        Powered by NodeBB Contributors
                                        • First post
                                          Last post
                                        0
                                        • Categories
                                        • Recent
                                        • Tags
                                        • Popular
                                        • World
                                        • Users
                                        • Groups