Pylon can be the identity provider other systems sign into through. Apps that ship with their own internal tools, microservices, or third-party SaaS that accepts “any OIDC IdP” point at Pylon’s discovery doc and treat your Pylon-issued JWTs as the identity layer.Documentation Index
Fetch the complete documentation index at: https://docs.pylonsync.com/llms.txt
Use this file to discover all available pages before exploring further.
What ships
/.well-known/openid-configuration— standard OIDC discovery doc, root-mounted (no/api/prefix) so third-party clients find it without configuration tweaks./oidc/jwks— JWKS endpoint that publishes the RSA public key when configured.
/api/auth/jwt. HS256 is the default; for downstream verification by third parties, switch to RSA and publish the public key via JWKS.
Endpoints
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/.well-known/openid-configuration | GET | none | OIDC discovery document |
/oidc/jwks | GET | none | Public-key JWKS (empty when only HS256 is configured) |
Discovery document
issuer, authorization_endpoint, token_endpoint, jwks_uri, supported scopes, response types, signing algorithms. The issuer is sourced in priority order:
PYLON_OIDC_ISSUERenv var (e.g.https://auth.your-app.com)- Request’s
Hostheader →https://<host> http://localhost:4321(dev fallback)
PYLON_OIDC_ISSUER explicitly. Relying on Host works fine until you front Pylon with a reverse proxy that doesn’t forward it the way you expect.
JWKS endpoint
-
{ "keys": [] }when Pylon is configured with HS256 only (the default). HS256 is symmetric — there’s no public key to publish. This is a correct OIDC response, not a misconfiguration; it means “no asymmetric verification keys are published.” Downstream services that need to validate Pylon-issued JWTs must share the HS256 secret out-of-band. -
{ "keys": [...] }with a single RSA key whenPYLON_OIDC_JWKS_RSA_Nis set. The exponent defaults toAQAB(65537), the key id defaults topylon-default.
Configuration
Scope
Pylon’s OIDC provider surface is discovery + JWKS only today. Authorization-code flow, dynamic client registration, and token endpoint are not implemented. The recommended pattern is:- Users sign in to your Pylon-backed app via any built-in method (magic code, password, OAuth, passkey, etc.).
- Your app calls
/api/auth/jwtto mint a JWT for the user. - The JWT is passed to downstream services that verify it against your shared HS256 secret OR a published RSA public key via this JWKS endpoint.
/authorize + /token flow with Pylon-issued auth codes, that’s not currently supported — use per-org SSO in reverse (Pylon → external IdP) or contribute the implementation upstream.
Where to go next
- JWT sessions — minting the tokens downstream services verify
- SSO — the other direction (external IdPs signing INTO Pylon)