Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • 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

FòrumCAT

  1. Home
  2. Uncategorized
  3. @julian diving into the hard problems of building for the Fediverse at #Fedicon, starting with hilariously talking about how those hard problems look like to average users 😅

@julian diving into the hard problems of building for the Fediverse at #Fedicon, starting with hilariously talking about how those hard problems look like to average users 😅

Scheduled Pinned Locked Moved Uncategorized
fedicon
98 Posts 13 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.
  • naturzukunft@mastodon.socialN naturzukunft@mastodon.social

    @evan @julian @thisismissem There is a mapping in the resource server between PreferredUsername and an actor. This is a hack; I had to extend it because Mastodon uses the username as a unique identifier. Without Mastodon support, it would be a mapping between IssuerUserId and Actor. The data for the mapping comes from the JWT token.

    But that's beside the point.

    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
    #55

    @naturzukunft @julian @thisismissem I think your point was that any configuration that requires adding plugins or adapters for KeyCloak is a bad architecture, and you're committed to using KC entirely off-the-shelf.

    thisismissem@hachyderm.ioT 1 Reply Last reply
    0
    • naturzukunft@mastodon.socialN naturzukunft@mastodon.social

      @evan @julian @thisismissem There is a mapping in the resource server between PreferredUsername and an actor. This is a hack; I had to extend it because Mastodon uses the username as a unique identifier. Without Mastodon support, it would be a mapping between IssuerUserId and Actor. The data for the mapping comes from the JWT token.

      But that's beside the point.

      thisismissem@hachyderm.ioT This user is from outside of this forum
      thisismissem@hachyderm.ioT This user is from outside of this forum
      thisismissem@hachyderm.io
      wrote last edited by
      #56

      @naturzukunft @evan @julian we have a userinfo endpoint now in mastodon that gives you a unique subject (sub) claim: https://docs.joinmastodon.org/methods/oauth/#userinfo

      This is all discoverable via standards that exist in OAuth (with a touch of OIDC language)

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

        @naturzukunft @julian @thisismissem I think your point was that any configuration that requires adding plugins or adapters for KeyCloak is a bad architecture, and you're committed to using KC entirely off-the-shelf.

        thisismissem@hachyderm.ioT This user is from outside of this forum
        thisismissem@hachyderm.ioT This user is from outside of this forum
        thisismissem@hachyderm.io
        wrote last edited by
        #57

        @evan @naturzukunft @julian as Client ID Metadata Documents move through the standards process, I would assume keycloak will adopt them and Client ID Prefixes.

        thisismissem@hachyderm.ioT evan@cosocial.caE 2 Replies Last reply
        0
        • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

          @evan @naturzukunft @julian as Client ID Metadata Documents move through the standards process, I would assume keycloak will adopt them and Client ID Prefixes.

          thisismissem@hachyderm.ioT This user is from outside of this forum
          thisismissem@hachyderm.ioT This user is from outside of this forum
          thisismissem@hachyderm.io
          wrote last edited by
          #58

          @evan @naturzukunft @julian but keycloak being able to understand wtf a json-ld document of type Service or Application is? Incredibly unlikely, especially when the contents within isn't even remotely aligned with the IANA registry for Dynamic Client Registration Metadata values.

          evan@cosocial.caE 1 Reply Last reply
          0
          • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

            @evan @naturzukunft @julian as Client ID Metadata Documents move through the standards process, I would assume keycloak will adopt them and Client ID Prefixes.

            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
            #59

            @thisismissem @naturzukunft @julian but they don't work right now, out of the box? I think that doesn't meet his requirements then.

            thisismissem@hachyderm.ioT 1 Reply Last reply
            0
            • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

              @evan @naturzukunft @julian but keycloak being able to understand wtf a json-ld document of type Service or Application is? Incredibly unlikely, especially when the contents within isn't even remotely aligned with the IANA registry for Dynamic Client Registration Metadata values.

              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
              #60

              @thisismissem @julian sorry, I don't know what you're talking about.

              KeyCloak has an extension mechanism and you can use it to retrieve a Client object from somewhere besides the built-in database. But someone needs to write that plugin. @naturzukunft said it wasn't acceptable for him to use any kind of extension or plugin.

              https://cosocial.ca/@evan/114972162312054007

              1 Reply Last reply
              0
              • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                @naturzukunft @evan @julian we have a userinfo endpoint now in mastodon that gives you a unique subject (sub) claim: https://docs.joinmastodon.org/methods/oauth/#userinfo

                This is all discoverable via standards that exist in OAuth (with a touch of OIDC language)

                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
                #61

                @thisismissem @naturzukunft @julian hey, that brings up a great point. Does Mastodon support clients using OAuth for accessing the read-only parts of the API (reading an actor, reading an outbox, reading a note)? I've done it with no authentication and with HTTP Signatures but I don't know if you can use OAuth. That would be a huge step in the right direction.

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

                  @thisismissem @naturzukunft @julian but they don't work right now, out of the box? I think that doesn't meet his requirements then.

                  thisismissem@hachyderm.ioT This user is from outside of this forum
                  thisismissem@hachyderm.ioT This user is from outside of this forum
                  thisismissem@hachyderm.io
                  wrote last edited by
                  #62

                  @evan @naturzukunft @julian because we're an internet draft in front of the OAuth Working Group at IETF and we're having to balance a dozen different needs and compatibility issues. But we already have adoption in some places (bluesky/AT Proto being one of the most notable adopters)

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

                    @thisismissem @naturzukunft @julian hey, that brings up a great point. Does Mastodon support clients using OAuth for accessing the read-only parts of the API (reading an actor, reading an outbox, reading a note)? I've done it with no authentication and with HTTP Signatures but I don't know if you can use OAuth. That would be a huge step in the right direction.

                    thisismissem@hachyderm.ioT This user is from outside of this forum
                    thisismissem@hachyderm.ioT This user is from outside of this forum
                    thisismissem@hachyderm.io
                    wrote last edited by
                    #63

                    @evan @naturzukunft @julian not for AP, because we're don't support anything related to C2S. We could add OAuth support there theoretically, but it's not a priority right now.

                    evan@cosocial.caE 1 Reply Last reply
                    0
                    • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                      @evan @naturzukunft @julian not for AP, because we're don't support anything related to C2S. We could add OAuth support there theoretically, but it's not a priority right now.

                      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
                      #64

                      @thisismissem @naturzukunft @julian right, but the ActivityPub API is not just about posting activities to the `outbox`. It also includes reading all the actors, collections and objects in the Activity Streams 2.0 format.

                      Anyways, I might look into it and make an issue and PR. If it worked properly, you could do a decent read-only application with the ActivityPub API, without making any commitment to the client-to-server part of the spec. That'd be a nice step forward for the API.

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

                        @thisismissem @naturzukunft @julian right, but the ActivityPub API is not just about posting activities to the `outbox`. It also includes reading all the actors, collections and objects in the Activity Streams 2.0 format.

                        Anyways, I might look into it and make an issue and PR. If it worked properly, you could do a decent read-only application with the ActivityPub API, without making any commitment to the client-to-server part of the spec. That'd be a nice step forward for the API.

                        thisismissem@hachyderm.ioT This user is from outside of this forum
                        thisismissem@hachyderm.ioT This user is from outside of this forum
                        thisismissem@hachyderm.io
                        wrote last edited by
                        #65

                        @evan @naturzukunft @julian talk to the team first. Doing changes here is not simple.

                        cc @MastodonEngineering

                        evan@cosocial.caE 1 Reply Last reply
                        0
                        • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                          @evan @naturzukunft @julian talk to the team first. Doing changes here is not simple.

                          cc @MastodonEngineering

                          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
                          #66

                          @thisismissem @naturzukunft @julian @MastodonEngineering that was on my agenda.

                          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
                            #67

                            I'm still catching up on this conversation, but I just want to add that this analysis is spot on. Very well said, Julian. Thank you!

                            I'm collecting a few thoughts on this that won't fit into a toot, so I'll probably post them elsewhere and link back here once I get it together.

                            @julian @FenTiger @evan

                            1 Reply Last reply
                            0
                            • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                              @julian @naturzukunft FEP/d8c2 is poorly designed and the comments on socialhub show this. It's not how OAuth is meant to work.

                              We should be using Authorization Server Metadata + Rich Authorization Requests for any OAuth implementation for an ActivityPub API.

                              Scopes would ultimately be pretty minimal, e.g., profile, offline_access (both OIDC), and maybe like manage:keys for updating signing keys; the rest should probably be RARs.

                              For discovery, if the Actor object advertises an authentication method of OAuth or OIDC, the look for the authorization server URL, discover all OAuth specifics from there.

                              For clients, you could do dynamic client registration, but it has drawbacks, so I'd recommend Client ID Metadata Documents.

                              risottobias@toot.risottobias.orgR This user is from outside of this forum
                              risottobias@toot.risottobias.orgR This user is from outside of this forum
                              risottobias@toot.risottobias.org
                              wrote last edited by
                              #68

                              @thisismissem @julian @naturzukunft is this in a FEP or RFC someplace?

                              thisismissem@hachyderm.ioT 1 Reply Last reply
                              0
                              • fentiger@mastodon.socialF fentiger@mastodon.social

                                @julian @benpate @evan I think FEP-3b86 only really allows for actions that the home server already knows how to carry out; the advantage of FEP-d8c2 is that it allows clients to add functionality of their own; see eg Evan's checkin app, which can post geo-tagged activities even via a server which doesn't natively support them.

                                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
                                #69

                                @FenTiger @julian @evan

                                This is a good point, though I'm not clear how different servers would handle outbox requests for activities that they don't support. I'm pretty sure mine would just die.

                                My big concern with OAuth tokens is that they require me to give away write access to my Fediverse identity when I "like" or "reply" to something, which could easily be an attack vector.

                                We talked about scoping OAuth tokens, but it feels like a lot of moving parts. More details later

                                fentiger@mastodon.socialF evan@cosocial.caE 2 Replies Last reply
                                0
                                • risottobias@toot.risottobias.orgR risottobias@toot.risottobias.org

                                  @thisismissem @julian @naturzukunft is this in a FEP or RFC someplace?

                                  thisismissem@hachyderm.ioT This user is from outside of this forum
                                  thisismissem@hachyderm.ioT This user is from outside of this forum
                                  thisismissem@hachyderm.io
                                  wrote last edited by
                                  #70

                                  @risottobias @julian @naturzukunft anyone paying me to write it? No? Then there's probably not gonna be s document appear whilst I struggle to pay my rent

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

                                    @thisismissem @julian @naturzukunft the point of discovery is to find the important endpoints and parameters for the flows. Many implementers who are concentrating on a single API skip discovery because the resource provider has already defined the specific flow. Alternatively, many API providers allow client registration out of band. It is absolutely 100% OK to do OAuth without using features like discovery and dynamic client registration.

                                    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
                                    #71

                                    I'm genuinely behind on this. I've skimmed Evan's FEP, but a lot of OAuth complexity is still opaque to me.

                                    It seems like the missing piece with using the C2S API would be *figuring out* what endpoints I can call to initiate an activity.

                                    Does FEP-d8c2 implement discovery in some way that I'm not seeing? Or, is this something *still to be defined* and I'm just jumping the gun, here?

                                    @evan @thisismissem @julian @naturzukunft

                                    fentiger@mastodon.socialF by_caballero@mastodon.socialB evan@cosocial.caE 3 Replies Last reply
                                    0
                                    • benpate@mastodon.socialB benpate@mastodon.social

                                      @FenTiger @julian @evan

                                      This is a good point, though I'm not clear how different servers would handle outbox requests for activities that they don't support. I'm pretty sure mine would just die.

                                      My big concern with OAuth tokens is that they require me to give away write access to my Fediverse identity when I "like" or "reply" to something, which could easily be an attack vector.

                                      We talked about scoping OAuth tokens, but it feels like a lot of moving parts. More details later

                                      fentiger@mastodon.socialF This user is from outside of this forum
                                      fentiger@mastodon.socialF This user is from outside of this forum
                                      fentiger@mastodon.social
                                      wrote last edited by
                                      #72

                                      @benpate @julian I suppose this is where fine grained authorization (such as RAR) comes in - assuming that people will understand it - which they might not!

                                      Looking forward to talking about the details properly...

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

                                        I'm genuinely behind on this. I've skimmed Evan's FEP, but a lot of OAuth complexity is still opaque to me.

                                        It seems like the missing piece with using the C2S API would be *figuring out* what endpoints I can call to initiate an activity.

                                        Does FEP-d8c2 implement discovery in some way that I'm not seeing? Or, is this something *still to be defined* and I'm just jumping the gun, here?

                                        @evan @thisismissem @julian @naturzukunft

                                        fentiger@mastodon.socialF This user is from outside of this forum
                                        fentiger@mastodon.socialF This user is from outside of this forum
                                        fentiger@mastodon.social
                                        wrote last edited by
                                        #73

                                        @benpate @evan @thisismissem @julian @naturzukunft I think the idea is that you get an access_token which you can use to post to the outbox - which you can discover from the Actor object.

                                        benpate@mastodon.socialB 1 Reply Last reply
                                        0
                                        • fentiger@mastodon.socialF fentiger@mastodon.social

                                          @benpate @julian I suppose this is where fine grained authorization (such as RAR) comes in - assuming that people will understand it - which they might not!

                                          Looking forward to talking about the details properly...

                                          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
                                          #74

                                          @FenTiger @julian

                                          Yes. It seems possible, but would require a lot of complex thought to do well. And that complexity is pushed onto the user, who has to determine if they like the terms that the website is presenting in order to continue putting a "star" on an article.

                                          You and I will implement this ethically. Others will implement it adversarially -- I want to build the protocol to protect against the next Cambridge Analytica.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups