Authentication with OAuth Indieauth to simplify registration #202
Replies: 2 comments 3 replies
-
the spec is a bit confusing to follow without having the context of "micropub" as you noted. can you summarize what problem indiauth solves, how that applies to MCP and how the solution works? |
Beta Was this translation helpful? Give feedback.
-
I've been working on pulling out the "client ID as URL" part of IndieAuth into its own spec in the OAuth working group. You can find the latest version here: https://datatracker.ietf.org/doc/draft-parecki-oauth-client-id-metadata-document/ This is what BlueSky has implemented since they have the same problem as described here, but were not willing to deal with the complexities that Dynamic Client Registration brings along. Home Assistant also implemented client IDs as URLs (but without the metadata fetching part) from IndieAuth several years ago too. For native apps that aren't actually running on a web server with a URL, the developer of the app can host a metadata file at the app's website. It's not really a problem for all the instances of the native app to share a client ID, because having a publicly available dynamic client registration endpoint doesn't give you any additional assurance of the app's identity either. If you want to bind tokens to a particular app instance, that's better off done using DPoP rather than a dynamically registered client secret anyway. This is also what BlueSky has opted for with their OAuth profile. |
Beta Was this translation helpful? Give feedback.
-
Pre-submission Checklist
Discussion Topic
Proposal
The current authentication proposal uses OAuth which is a standard, which is great. Using the dynamic client registration mechanism is also very helpful to reduce the burden on end users to register clients with servers.
However, there are even simpler approaches for decentralized oauth: OAuth IndieAuth is an extension to OAuth that dramatically simplifies client registration -- by removing it entirely -- and is a great fit for MCP since it is a decentralized approach.
Additional Detail
A question would be: What would be the guidance in the spec? My suggestion would be that this is a SHOULD recommendation, that is simpler to implement that dynamic client registration. In particular, I believe this is strictly easier and simpler to implement than dynamic client registration since there are no additional endpoints to create on the client and server.
As a purely selfish example, this would mean MCP clients integrate with Home Assistant MCP server authentication without any modifications or compatibility issues.
Additional info
There are some additional security precautions around url validation in relation to the client id. See https://indieauth.spec.indieweb.org/#authorization for an overview of the flow, which is essentially the same as an oauth flow.
Here are some additional references:
I previously mentioned this in the initial auth discussion, though there seemed to be some misunderstanding about micropub (which I think is a distraction in the spec). Just consider that an initial real world example of adoption.
Beta Was this translation helpful? Give feedback.
All reactions