Thanks for the writeup!
This is a really good point. The me
parameter in the request is really more of a hint, since the authorization server will ultimately return the final me
value at the end of the flow. The client just has to verify that it's on the same domain that was used to discover the authorization endpoint.
I implemented an IndieAuth server into my website quite a while ago, so I checked the code there. It turns out I had some code that verified the me
parameter was in the request, but it actually completely ignores that value after that. Since my site is a single-user site, it's always going to return https://aaronparecki.com/
as the profile URL at the end.
I'm inclined to make a change to the spec that says clients SHOULD include the me
in the authorization request, but that the authorization server should not require the parameter. I do like that it helps IndieAuth be more in line with OAuth 2.0.