metasyn icon navigation icon
pastel rainbow stripes

oidc

recently i decided to setup an oidc server using void auth. part of the reason i wanted to do this is because sometimes there are services that allow for an oidc provider so you don’t have to use an existing service like github or gmail etc. as part of a long process of icon representing the epistemic certainty of the linked pagedegoogling, i figured it’s a good time to learn how to authenticate using just my own domain and static web server.

while i’m not sure how oftne i’ll use it, i am jotting down some notes here in case someone else comes across the same need, and, as notes for myself.

tailscale

in this case, i was setting up void auth to work with tailscale. tailscale also has decent documentation on how to do this but i still found it somewhat difficult to figure out, thus, the note here. the main downside is that i cannot migrate my existing tailnet, but, since it was tied to my github account, i didn’t really want to keep that one anyway.

  1. webfinger endpoint (caddy)
metasyn.pw {
   file_server

   # headers for webfinger only
   @webfinger {
       path /.well-known/webfinger
       method GET HEAD
       query resource=acct:xander@metasyn.pw
       query resource=mailto:xander@metasyn.pw
       query resource=https://metasyn.pw
       query resource=https://metasyn.pw/
   }

   rewrite @webfinger /webfinger.json

   header @webfinger {
       Content-Type "application/jrd+json"
       Access-Control-Allow-Origin "*"
       X-Robots-Tag "noindex"
   }
}

returns:

{
 "subject": "acct:xander@metasyn.pw",
 "links": [
   {
     "rel": "http://openid.net/specs/connect/1.0/issuer",
     "href": "https://auth.metasyn.pw/oidc"
   }
 ]
}
  1. voidauth oidc app
  1. tailscale custom oidc provider
          +-------------------+
          |   tailscale ui    |
          +-------------------+
                   |
                   | webfinger lookup
                   v
          +-------------------+
          |   metasyn.pw      |
          |  /.well-known/    |
          |   webfinger       |
          +-------------------+
                   |
                   | fetch issuer URL
                   v
          +-------------------+
          | auth.metasyn.pw   |
          |     voidauth      |
          |  OIDC endpoints   |
          +-------------------+
                   |
                   | user login / sso
                   v
          +-------------------+
          | authorization code|
          +-------------------+
                   |
                   | token exchange
                   v
          +-------------------+
          | tailscale grants  |
          |  access to user   |
          +-------------------+

last updated:

2026.02.16