HS256), which only Sinas itself can verify. Switch to asymmetric signing and any standard JWT library can verify tokens offline — no shared secret, no per-request call back to Sinas:
openssl genpkey -algorithm RSA -pkcs8 -out jwt-private.pem.
What changes with RS256
Access tokens gain the standard verification claims plus a key id header:
The JWKS endpoint is unauthenticated (public keys are public) and the
kid in each token’s header matches the published key, so libraries pick the right key automatically.
Verifying from your service
Point your JWT middleware at the JWKS URL and check issuer + audience. No Sinas SDK needed.FastAPI / Python
Express / Node
Getting user profile data
The token proves identity; for profile data there’s an OIDC-style userinfo endpoint (works under both algorithms):sub, email, and roles are always present. Every entry in the user’s custom fields appears as a plain claim — set by admins or by your backend during token exchange — so downstream services can authorize on org-specific attributes without extra lookups. Custom fields can never shadow the standard claims.
Configuration reference
Key resolution order:
JWT_PRIVATE_KEY → JWT_PRIVATE_KEY_FILE → auto-generated and stored encrypted in the database.
What this is not
Sinas is not a full OIDC identity provider — there is no/authorize, consent, or dynamic client registration. If your organization runs Keycloak, Authentik, or another IdP, keep it as the source of truth and use token exchange to bring those users into Sinas instead.