@simonw↩️ IndieAuth is essentially the spiritual successor to OpenID - it lets you use your own domain name to sign-in to services in a decentralized fashion
Since Datasette actively encourages deploying brand new web applications to new URLs on a whim, it's a great fir for authentication (twitter.com/_/status/1329232167851814912)
@blaine↩️ In the meantime, IndieAuth is, imho, a step backwards. OAuth/OIDC sign-in with login_hint works *great*; the lack of auto-/no-registration / a public key version is a real bummer, though. (twitter.com/_/status/1329271750924800000)
@simonw↩️ I'm intrigued by the IndieAuth thing where you can input a domain but your final identifier is a page specific to you on that domain - seems like it could help avoid users having to register their own domain or remember their full URL (twitter.com/_/status/1329272943474397184)
@blaine↩️ (specs exist, but no-one uses it; I really wish IndieAuth was something we could realistically add support for on e.g. Conde sites, but the "you must register your own domain" aspect makes it virtually impossible) (twitter.com/_/status/1329272420025339904)
@aaronpk↩️ This one I’m really confused on, and we should probably chat about it to clear things up. IMO OIDC is more of a barrier here because the default is that clients need to register. With IndieAuth there is no expectation of client registration at all. (twitter.com/_/status/1329277964400267265)
@aaronpk↩️ There is no obligation that you have to register your own domain for IndieAuth to work. I’ve talked about this at ActivityPub Conference showing how they can use IndieAuth to enable a standards-based app ecosystem for ActivityPub/Mastodon apps. That of course uses shared domains. (twitter.com/_/status/1329277462530772993)
@aaronpk↩️ Email addresses *are* domain-based auth. I think you’re conflating two different parts of the system. In IndieAuth, the canonical user identifier doesn’t have to be the thing the user enters in a login prompt. This is also true for almost every other authentication system. (twitter.com/_/status/1329280422295977984)
ZegnatI would love to know why they think IndieAuth is a step backwards, when the problem with OAuth is the lack of registration. IndieAuth is an extension to OAuth that basically patches that, if you were to ask me
maxwelljoslyn, swentel, schmudde, jjuran, gxt, jeremych_, [Raphael_Luckom], geoffo, [tantek] and [Aaron_Klemm] joined the channel
[Raphael_Luckom]Does anyone have a good resource to share on strategies of content organization? Right now my hugo-generated blog has next post / previous post links on each post. That's cool, but what if I wanted to publish "list of posts with tag X"--when you go to those posts, should they still have previous / next links in the context of their chronological order? I'm sure there are some library-science-y practices for doing this, but I don't know
[KevinMarks]I think a "next with this tag" could make sense, assuming that time ordering for them is clear, but if a post has multiple tags that's confusing. By default doesn't Hugo make you paginated list pages per tag, so you can have summary there ang click through?
[Raphael_Luckom]Yeah, that's how it works, but I think that once you click through a tag-list link, you land on a post whose 'next' is not in the context of the list you clicked through--I think your idea of "next with this tag" is exactly what I was getting at--it seems like what I want, but it also seems like it would get confusing in exactly the way you described.
@autiomaaGood article about the future of web authentication methods, together with implementation details.
"IndieAuth is a spiritual successor to OpenID, developed and maintained by the IndieWeb community and based on OAuth 2." (twitter.com/_/status/1329464376106119175)
petermolnar[Raphael_Luckom]: re content organisation: if I'm not mistaken we had a session where adactio (?) talked a bit about taxonomy, folksonomy, etc; the notes are on https://indieweb.org/2018/Berlin/datalake but they look a lot more vague than I remember. That, or it was another session.
Zegnat[Simon_Willison] great point there on the spec maybe not clearly defining what would be accepted and what not for people to enter as a login URL. I have tried to capture the thoughts here: https://github.com/indieweb/indieauth/issues/65
[Simon_Willison]Oh I think I've spotted a spec confusion: "The resulting profile URL MAY be different from the canonical profile URL as resolved by the client, but MUST be on the same domain." - that's a security issue right? The problem is that the final JSON returned by the profile URL response https://indieauth.spec.indieweb.org/#profile-url-response could have anything in the "me" field - it's up to my client implementation to verify that the "me"
[Simon_Willison]I missed that subtlety (I think I assumed this MUST was a requirement for the auth server, not the client) which means I have a pretty nasty security hole in my implementation!
LoqiIt looks like we don't have a page for "indieauth.rocks" yet. Would you like to create it? (Or just say "indieauth.rocks is ____", a sentence describing the term)
aaronpkhmm if i had to prioritize building a test suite or building a replacement for indieauth.com, which would be better to do before the end of the year?
[Simon_Willison]I had to figure out how to install Wordpress to help test my implement- thankfully that's only a few clicks on DigitalOcewn even if your PHP ecosystem knowledge is as rusty as mine
[Simon_Willison]Question: “The resulting profile URL _MAY_ be different from the canonical profile URL as resolved by the client, but _MUST_ be on the same domain.” - what are the rules for “on the same domain”? Do I just need to look at the whole domain portion of the URL e.g. `www.example.com` or should I consider `foo.example.com` to be on the same domain as well?
[Simon_Willison]I think there may be a need for new terminology in the spec: it talks about “User profile URLs” and “Client identifier URLs” - but there’s also the thing-that-the-use-typed-in-the-first-place - I’d been assuming that was the user profile URL but it’s not, for two reasons: 1. the final user profile URL may differ from what they typed in and 2. `foo@exmaple.com` is a valid initial input URL even though the rules for user pro
[Simon_Willison]so “same domain” does include subdomains yeah? Or is `example.com` the same domain as `foo.example.com` BUT `bar.example.com` is not the same domain as `foo.example.com`?
[Simon_Willison]Also, does this mean that it wouldn’t be safe for me to deploy my own indentity provider implementation to Glitch since all Glitch apps share the same domain? If I deployed an identity provider at `simon-indieauth.glitch.me` then someone else could deploy `evil-indieauth.glitch.me` and return a `"me"` value of `simon-indieauth.glitch.me` from it, stealing my identity
LoqiA subdomain typically refers to a domain with one more "name(dot)" component than that which someone actually has registered which is often seen indieweb sites with a family name domain like joel(dot)franusic(dot)com, or often on silos like matt(dot)wordpress(dot)com https://indieweb.org/subdomain
ZegnatI am pretty sure intent was literal hostname match. But I would have to see if I can find a good citation for that. Definitely worth mentioning though.
ZegnatMight be able to clean that up some more. I think we may be able to drop multiple references to "profile URL" throughout, if we chose to only call the User Identifier (the `me` response) a "profile URL"
[Simon_Willison]This kind of thing needs to be really clear in the spec - we don’t want to fall into the same trap as JWT where the same security hole (alg=none) shows up in multiple implementations
ZegnatI did not specifically think about subdomains back when we were discussing that change (also because to me domain == hostname, thus every subdomain is a new domain). But yeah, no reason it doesn't also addresses that.
[Simon_Willison]I'm going to implement same domain including same subdomain first since that closes my security hole, I'll do subdomain matching later (once I understand the public suffix list issue)
Zegnatsub.www.example.com is a "host" that has the "registerable domain" of example.com. So the URL spec uses the term "registerable domain" to refer to domains minus subdomains.
ZegnatI think for IndieAuth it would be easier to just get rid of any verbage that talks about comparing domains. It isn't neccessary. I might try to expand my PR tomorrow if that sounds like a good way forward.
[Simon_Willison]Another question… “It MUST follow any permanent redirections from this URL to discover the canonical profile URL, in the same manner as initial profile URL discovery.”
[Simon_Willison]I’m currently planning to follow 301s (up to a limit of 5) but throw an error if I encounter a temporary redirect - is that the right thing to do?
[Simon_Willison]> Clients _MUST_ follow HTTP redirects (up to a self-imposed limit). If one or more successive HTTP permanent redirects (HTTP 301 or 308) are encountered starting with the very first request, the client _MUST_ use the final permanent redirection’s target URL as the canonical profile URL. If any other redirection (such as HTTP 302, 303, or 307) is encountered, it must still be resolved for endpoint discovery, but this redirection does
[Simon_Willison]Should I follow the exact same rules for verifying the “me” value at the end of the flow? The language there only mentions “permanent redirections” but then says “in the same manner as…”
sknebelI'd say remove the "permanent" [Simon_Willison] pointed out as being confused and that bit is good, given we decided in the discussion in the session how to resolve it
[Simon_Willison]Aah OK, so my final step is “look at the `"me"` URL returned by the authorization server, fetch that URL, follow all redirects and confirm that it has the same `rel="authorization_server"` that I started with”
[Simon_Willison]But I still need to differentiate between 301 and 302 in the code I’m writing that resolves the canonical URL for the user profile at the start of the flow?
[Simon_Willison]The difference between temporary and permanent URLs is turning out to be the hardest part of the spec to implement - PCKE was actually pretty simply in comparison
[Simon_Willison]New release with those changes - it now follows permanent/temporary redirects correctly and verifies that the `authorization_endpoint` from the final `me` value matches the endpoint from the start of the flow https://github.com/simonw/datasette-indieauth/releases/tag/1.2
[Simon_Willison]How about a language-agnostic IndieAuth test suite consisting of a folder full of mocked HTTP requests, maybe in JSON? Plus data showing the expected result for signing in with a specific me= URL?
aaronpki was going to approach it more like webmention.rocks and micropub.rocks where it's an interactive tool that can play each role and different test numbers do different things
sebbuwhen i added authorization_endpoint and token_endpoint on my site, it worked on indielogin but not indieauth (and other sites that depends on indieauth)