Partner sign-in handoff
Send people to NBL+ with your redirect_uri (and client_id when required). After they sign in, NBL+ redirects them back to you and appends a short-lived signed JWT that your backend should verify (typically using the public keys at /.well-known/jwks.json).
Operator setup
NBL+ must register your integration before handoff works. The operator adds a client entry (for example in config/auth-oauth-clients.json) and points the deployment at it with AUTH_OAUTH_CLIENTS_PATH or inline AUTH_OAUTH_CLIENTS_JSON. Each client has a client_id, a list of allowed redirectUris, and optionally allowedDomains (any https callback on that host or its subdomains, e.g. nbl.com.au). Only registered targets are accepted.
End-to-end flow
- Agree with the NBL+ operator on your HTTPS
redirect_uri(listed underredirectUrisor on anallowedDomainshost). Useclient_idfor other callbacks (e.g. third-party ticketing). - From your site, send the user to NBL+, for example (NBL property on an allowed domain):
https://<nbl-plus-host>/auth?redirect_uri=https%3A%2F%2Fwww.nbl1.com.au%2Fsso%2Fcallback&action=sign-in. - If they are not signed in yet, they complete sign-in (or sign-up) on NBL+. The portal keeps
redirect_uri, optionalclient_id, and optionalstateacross those steps. - Once signed in, NBL+ redirects the browser to your
redirect_uriand adds ajwtquery parameter (andstateif you sent one), merging with any query you already had on the callback URL. - Your server reads
jwt, verifies the signature and claims, then establishes the session on your side. Do not trust the token in the browser alone without server-side verification.
Who signs the token?
NBL+ issues and signs the handoff JWT. Your service verifies it—your integration does not mint this token.
Verify the JWT with JWKS
- Fetch
GET https://<nbl-plus-host>/.well-known/jwks.json. If that document is not available, check with the operator how verification is expected to work for that environment. - Use the JWS header
kidto pick the matching key in the JWKS. This deployment publishesrosetta-sso-1for its usual signing key. - Validate standard claims:
issmust be NBL+'s public site origin for that environment;audmust be your callback URL's hostname only, lowercased (for exampleyoursite.example), not the full URL; enforceexp(lifetime is on the order of minutes). - The payload normally includes
sub(user id),email,name, and aprovidermarker. A Firebase ID token may appear underfirebase_user.jwtfor backends that need to validate identity with Firebase as well.