OAuth2 / OIDC authorization endpoint
Docs version v1 (main)Nauthera is pre-1.0, in a design-partner program
/authorizeStarts the authorization-code flow (RFC 6749 §4.1, OIDC Core). PKCE is
required for public clients and enforced for all per RFC 9700; the
code_challenge is bound to the code and verified at the token endpoint.
On success redirects (302) to the client's exactly-registered
redirect_uri with code, state, and iss (RFC 9207). An error is
answered directly only while the client or its redirect URI is unknown
or invalid, and the server never redirects to an unvalidated URI; every
later error goes to the redirect URI with error, state and iss
(RFC 6749 §4.1.2.1).
Where the deployment serves the OpenID Connect implicit flow
(response_types_supported lists them), id_token and id_token token
return the ID token, and the access token, in the redirect's fragment
(OIDC Core §3.2). They require nonce, and are refused with
unsupported_response_type elsewhere.
Supports pushed authorization requests via request_uri (RFC 9126),
request objects via request / request_uri (RFC 9101 JAR), rich
authorization via authorization_details (RFC 9396), resource
indicators (RFC 8707), and DPoP key binding via dpop_jkt (RFC 9449).
- response_typestring
The response type.
codefor the authorization-code flow;id_tokenorid_token tokenfor the implicit flow where it is served. Required unless the request arrives byrequest_uri(RFC 9126), in which case it comes from the pushed request.Example"code"at most 64 characters
The registered client identifier (printable ASCII, no spaces).
Example"nauthera_2Rk9"1–256 characters · pattern
^[!-~]+$- redirect_uristring · uri
Must exactly match a registered redirect URI (RFC 9700 §2.1).
Example"https://app.example.com/callback"at most 2048 characters
- scopestring
Space-delimited scopes.
openidrequests an ID token.Example"openid profile email"at most 2048 characters · pattern
^\S+( \S+)*$ - statestring
Opaque CSRF value echoed back on the response.
Example"af0ifjsldkj"at most 1024 characters
- noncestring
OIDC value bound into the ID token to mitigate replay.
Example"n-0S6_WzA2Mj"at most 1024 characters
- response_modestring
How the authorization response is returned to the client:
queryfor the code flow,fragmentfor the implicit flow. Any other value is refused withinvalid_requeston the redirect URI.Example"query"at most 64 characters
- promptstring
Space-delimited OIDC prompt values (none, login, consent, select_account).
Example"consent"at most 64 characters · pattern
^(none|login|consent|select_account)( (none|login|consent|select_account))*$ - displayenumPossible values4 values
pagepopuptouchwap
- max_ageinteger
Maximum authentication age in seconds (OIDC).
Example3600between 0 and 315360000
- login_hintstring
at most 512 characters
- id_token_hintstring
A previously issued ID token hinting the current session.
at most 8192 characters
- ui_localesstring
Space-delimited BCP47 language tags for the UI.
Example"en-US fr-CA"at most 256 characters · pattern
^\S+( \S+)*$ - acr_valuesstring
Space-delimited requested Authentication Context Class References.
at most 512 characters · pattern
^\S+( \S+)*$ - claimsstring
OIDC claims request (a JSON object, URL-encoded; OIDC Core §5.5). A claim its
userinfoorid_tokenmember names adds the scope that releases it, where the client is registered for that scope.at most 8192 characters
- code_challengestring
PKCE challenge (RFC 7636). base64url, required for public clients.
Example"E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"43–128 characters · pattern
^[A-Za-z0-9_-]+$ - code_challenge_methodstring
S256. Any other method,plainincluded (RFC 7636 §7.2, RFC 9700 §2.1.1), is refused withinvalid_requeston the redirect URI.Example"S256"at most 64 characters
- requeststring
A JWT-Secured Authorization Request object (RFC 9101 JAR).
at most 16384 characters
- request_uristring
- resourcestring · uri
Resource indicator (RFC 8707) identifying the target resource server.
at most 2048 characters
- dpop_jktstring
JWK SHA-256 thumbprint (base64url, 43 chars) binding the code to a DPoP key (RFC 9449).
exactly 43 characters · pattern
^[A-Za-z0-9_-]+$
- Cookiestring
The request Cookie header; the interactive login / pending-auth session cookie, and the browser marker a sign-in is recognized by, are read from it.
302 FoundRedirect back to the client with an authorization code, OR to the hosted login UI (/login) when no valid session exists. The Location carries
code,state(if supplied) andiss(RFC 9207) on the success path, or the preserved authorization parameters on the login path.Redirect back to the client with an authorization code, OR to the hosted login UI (/login) when no valid session exists. The Location carries
code,state(if supplied) andiss(RFC 9207) on the success path, or the preserved authorization parameters on the login path.When the deployment serves OIDC Session Management 1.0 the success Location additionally carries
session_state(§3), the value the relying party's iframe pollscheck_session_iframewith. It is absent otherwise, and absent for a client whose redirect URI has no web origin (a native custom scheme), which has nothing to compare against.Headers
LocationstringCache-Controlno-storePragmano-cacheSet-Cookiearray of strings
429 Too Many Requestsapplication/problem+jsonToo many requests.
Too many requests.
Body
RFC 9457 (formerly RFC 7807) problem details (application/problem+json).
codeis a stable machine-readable slug for the problem kind (it mirrors the last path segment oftype), so consumers can branch on it without parsing prose.typeishttps://nauthera.io/problems/<code>, which resolves to the code's runbook: why it happened, who is affected and what to do (RFC 9457 §3.1.1). A problem without a code hasabout:blank.errorsis present on validation failures and lists every offending field.- Example
"Request validation failed" - Example
400 - typestring · uriExample
"https://nauthera.io/problems/validation_error" - detailstringExample
"One or more fields did not satisfy the API schema." - codeenum
The kind of problem, as a stable machine-readable slug a client branches on and translates rather than parsing
titleordetail, which are English prose for logs. A problem whose status says everything the server knows carries nocode.Show moreShow less
validation_erroris the one code whose message is not a sentence about the code itself: the request failed the schema, and the specifics are theerrorslist — one entry per offending field — which a form renders on those fields.requiredandmalformedare spelled like two of the per-field violation codes (FieldError.code) but mean something else; the two vocabularies are told apart by position, never by spelling.Compatibility: this is a CLOSED enum, with the same cost as
AuditAction: a client generated against an older version of this document rejects a problem carrying a code added after it was built. Regenerate on upgrade, or decode the field as a plain string. It is enumerated anyway so that what a client must translate is knowable from the contract alone.Possible values43 valuesinvalid_requestinvalid_credentialsforbiddenunauthorizedinsufficient_user_authenticationprotected_accountpassword_held_by_directorylast_role_administratorinvalid_codetoo_many_requeststoo_many_attemptsaccount_lockedaccount_unavailablealready_enrolledregistration_disabledregistration_conflictcaptcha_failedinvalid_reset_linkpassword_reusedpassword_too_shortpassword_too_longpassword_compromisedinvalid_verification_linkinvalid_invitation_linkmail_relay_missingemail_unverifiednot_foundconflictunavailablebusywindow_too_largetoo_many_seriesinternal_errorrate_limitedmalformedbody_too_largerequiredvalidation_errorunknown_orginvalid_tokeninvalid_dpop_proofuse_dpop_nonceserver_error
- instancestringExample
"/introspect" - request_idstringExample
"8d94ed49-1caf-4ab3-9594-557142f2d023" - trace_idstring
Distributed-trace id (hex) for correlating this response with traces and logs. Present only when tracing is enabled and the request was recorded. Opaque and safe to log/share.
Example"4bf92f3577b34da6a3ce929d0e0e4736" - errorsarray of objects
Field-level violations (present for validation errors).
Each item:A single field-level validation violation.
Show item attributesHide item attributes
Offending field, dotted for nested bodies (e.g. child.id).
Example"token_type_hint"Machine-readable violation code: required, too_short, too_long, pattern, invalid_format, not_allowed, minimum, maximum, multiple_of, too_few, too_many, not_unique, malformed.
Example"not_allowed"- Example
"field token_type_hint must be one of [access_token, refresh_token]"
Errorapplication/jsonOAuth2 error response (RFC 6749 §5.2).
OAuth2 error response (RFC 6749 §5.2).
Headers
Cache-Controlno-storeWWW-AuthenticatestringDPoP-Noncestring
Body
An OAuth2 error response (RFC 6749 §5.2).
iss(RFC 9207) is present on authorization-endpoint error responses so clients can detect mix-up.A single ASCII error code.
Example"invalid_request"- error_descriptionstringExample
"client_id, redirect_uri and response_type are required" - error_uristring · uri
The error code's runbook (RFC 6749 §5.2):
https://nauthera.io/runbooks/oauth/<error>.Example"https://nauthera.io/runbooks/oauth/invalid_request" - statestring
Echoed authorization-request state (RFC 6749 §4.1.2.1).
- issstring · uri
Issuer identifier on authorization error responses (RFC 9207).