I had an idea, based on work with an existing organization with a membership system with OIDC-based authentication. My idea is that they could build DID and handle provisioning into their existing system. Basically, from the user’s side, they would select a username foo, the organisation would have a domain name, say example.social, and then, at a click of a button, they would get @foo.example.socialas their handle.
Behind the scenes (I suppose), this would need to provision a PLC (there’s something for that?) using the credentials they already have for their organisational identity, then, it would need to resolve DNS queries for _atproto TXT queries (preferably, since the list of DIDs can grow pretty large for the HTTPS resolution) for each member who have opted in to get their handle. Right?
So, these are the two parts. I have never gotten the grasp on if/how atproto uses OIDC, which has confused me since the OAuth part is about authz and OIDC is authn. But I would suppose that if an organisation has OIDC, the OAuth flow is very similar to that of atproto, so it wouldn’t be a big deal to manage the identity through an OIDC system since OIDC is built on an OAuth authz flow. How would this work?
For the second part, I envision a CoreDNS plugin, where a bit of Go would be a generic module to answer those TXTqueries, and a non-generic part that queries the membership system for the username, and then some cache logic so that this query would not need to be performed for every DID resolution (because it is cached, right?) Does that sound reasonable? Does something like that already exist in the Bluesky stack?