There is no self-service partner portal yet. App registration is handled manually by
the Renaiss team. To get a
client_id, a client_secret, and your redirect URI added to
the allowlist, reach out to the team. That’s also how you sign in to manage
your client for now.How it works
Renaiss is a confidential OIDC provider. Your integration follows the standard pattern:1
Register your app with the team
Send the team your app name and the exact redirect URI(s) you’ll use. They provision a
client and hand back your
client_id and client_secret over a secure channel.2
Discover the endpoints
Point your OIDC client at the discovery document and it derives the authorize, token,
userinfo, and JWKS endpoints automatically.
3
Run the authorization-code + PKCE flow
Redirect the user to Renaiss to consent, exchange the returned
code for tokens, and
verify the id_token.4
Read the user's claims
Use the verified claims from the
id_token (or call the userinfo endpoint).Prerequisites
Before you begin, you need:- A
client_idandclient_secretissued by the Renaiss team (see the callout above). - One or more exact redirect URIs registered on the allowlist.
- An OIDC client library. Examples below use Node’s
openid-client, but any compliant OIDC library works.
Configuration
Provide your integration with the following settings. Replace the bracketed values with the credentials and redirect URI the team gave you..env
${RENAISS_ISSUER}/.well-known/openid-configuration. Point
your OIDC client at that URL and it resolves the rest of the endpoints for you.
Client settings
Your client is provisioned as a confidential client with these defaults:Choosing an issuer
TheRENAISS_ISSUER determines which environment you authenticate against. Use the value the
team gives you during onboarding:
Only
localhost may use plain http. All deployed issuer hosts are HTTPS-only.Redirect URI must match exactly
Renaiss uses an exact-match, anti-phishing allowlist with no wildcards, trailing slashes, or port changes. The redirect URI your app sends must be byte-for-byte identical to a registered one. Need to add or change a URL (a new port, a deployedhttps://... callback, etc.)? Send it to
the team to allowlist. Registering it only on your side is not enough.
Controlling the consent screen
Addprompt=consent to the authorize request to force the consent screen on every sign-in.
Omit it and the user sees consent only the first time they authorize your app:
Quick start
Using Node andopenid-client:
1
Discover the provider
Load
${RENAISS_ISSUER}/.well-known/openid-configuration to configure your client.2
Build the login route
Generate a PKCE
code_verifier / code_challenge (S256), a random state, and a
nonce. Stash them in the session, then redirect to the authorize endpoint with
scope=openid profile email safe x (add prompt=consent to force the consent screen
on every sign-in).3
Handle the callback
At your redirect path, verify
state, exchange the code at the token endpoint (secret
in the request body), and verify the id_token signature against the JWKS, checking
iss, aud, exp, and nonce.4
Read the claims
Read the user’s claims from the verified
id_token, or call the userinfo endpoint.What you get back
These claims are returned in theid_token and from the userinfo endpoint, gated by the
scopes you requested:
Behaviors to handle:
subis opaque and stable, so store and key on it; never parse it for meaning.safe_wallet_address: nullmeans the wallet isn’t ready yet. Show a soft retry/empty state; do not hard-fail the login.- Always verify the
id_tokensignature plusiss/aud/exp/nonce. A compliant OIDC library does this for you.
Token exchange smoke test
Once you have an authorizationcode and the matching code_verifier, you can exchange them
directly to sanity-check your client:
access_token, id_token, and (if requested) a
refresh_token.
Get help
App registration, credentials, redirect-URI changes, and secret rotation are all handled by the Renaiss team while the self-service portal is in progress.Contact the Renaiss team
Reach out to register your app, get your credentials, or add a new redirect URI to the
allowlist. We’ll turn it around quickly.