Authorization Request
GET/authz-srv/authz
Authorization Request
This API initiates the OAuth 2.0 / OpenID Connect authorization process. It can be used to perform the following flows:
- Authorization Code Flow - Use
response_type=code - Authorization Code Flow with PKCE - Use
response_type=codewithcode_challengeandcode_challenge_method - Session transfer (native to web) - Optional query parameter
stt(Session Transfer Token fromPOST /token-srv/tokenwithgrant_type=session_transfer). Requires PKCE; use the web client asclient_id(same astarget_client_idwhen the STT was minted). - Pushed Authorization Request (PAR) - Use
request_uriparameter (obtained from/authz-srv/parendpoint) - Implicit Flow - Use
response_type=token(deprecated, not recommended)
The flow type is determined by the response_type parameter. All parameters are passed as query parameters in the URL, except when using PAR where request_uri is used instead.
response_type validation
The new behavior works as follows:
- The
response_typeis split into individual values. Only known values (code,token,id_token,device_code) are kept — anything else is ignored. If no valid value remains, the request is rejected withAUTH10013. - If the app has no
response_typeconfigured, all syntactically valid values are accepted. - If the app does have
response_typeconfigured, only the allowed values are kept. Disallowed values are silently removed. If nothing allowed remains after filtering,AUTH10013is returned. - Grant type checks are then applied to the filtered result: if the
response_typecontainstokenorid_tokenwithoutcode, the app must have theimplicitgrant enabled (otherwiseAUTH10014). If it containscode,authorization_codemust be enabled (otherwiseAUTH10015). Hybrid flows likecode tokendo not requireimplicit.
One thing worth keeping in mind: when values are removed by filtering, this is logged on our side but no error is returned to the client. So if you send response_type=code id_token but only code is allowed on the app, you'll effectively get a plain Authorization Code Flow — no ID Token from the authorization endpoint, and no error. If you're not expecting that, it can be easy to miss during testing.
The same response_type rules apply when response_type is sent via POST /authz-srv/par (Pushed Authorization Request).
Request
Responses
- 302
- 400
- 404
Redirect to redirect_uri with the authorization result (code, token, and/or id_token depending on the filtered response_type) as query parameters or URL fragment, plus state when provided.
Response Headers
Redirect URL with authorization result.
https://example.com/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=QBTVJ59VHOTKRKUCQ18VBad Request — validation failed (e.g. missing parameters, invalid client, disallowed redirect_uri, invalid response_type or grant configuration).
The server responds with a 302 redirect to the hosted error page (/identity/error), or to redirect_uri when prompt=none, with OAuth error parameters in the query string:
error(string): OAuth error codeerror_description(string): Human-readable error descriptionerror_code(string): cidaas error code (e.g.AUTH10001)error_hint(string): Hint for resolving the erroriss(string): Issuer URL
See the Location examples below for common error codes.
Response Headers
- ErrorAUTH10001
- ErrorAUTH10002
- ErrorAUTH10003
- ErrorAUTH10007
- ErrorAUTH10008
- ErrorAUTH10009
- ErrorAUTH10010
- ErrorAUTH10011
- ErrorAUTH10012
- ErrorAUTH10013
- ErrorAUTH10014
- ErrorAUTH10015
- ErrorAUTH10016
- ErrorAUTH10017
Redirect URL to /identity/error (or redirect_uri when prompt=none) with error query parameters.
AUTH10001 — missing client_id
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+request+is+missing+a+required+parameter%2C+client_id+is+missing&error_code=AUTH10001&error_hint=client_id+is+a+required+parameter+that+you+need+to+pass+in+queryAUTH10002 — missing response_type
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+request+is+missing+a+required+parameter%2C+response_type+is+missing&error_code=AUTH10002&error_hint=response_type+is+a+required+parameter+that+you+need+to+pass+in+query.+possible+values+are+code%2C+token+id_tokenAUTH10003 — error parsing request parameters
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+error+parsing+request+parameters&error_code=AUTH10003&error_hint=please+check+the+query%2Fform+parameters+you+are+passing+are+in+correct+formatAUTH10007 — invalid client_id
https://demo.cidaas.de/identity/error?error=invalid_client&error_description=invalid_client%3A+invalid+client_id+passed&error_code=AUTH10007&error_hint=please+check+if+you+passing+correct+client_id+or+the+client+is+disabled+or+deletedAUTH10008 — invalid redirect_uri
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+invalid+redirect_uri&error_code=AUTH10008&error_hint=please+check+if+you+passing+correct+redirect_uriAUTH10009 — redirect_uri not allowed
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+given+url+is+not+allowed+by+the+application+configuration&error_code=AUTH10009&error_hint=please+check+if+you+passing+correct+redirect_uri%2C+and+it+is+present+in+app+settingsAUTH10010 — missing redirect_uri
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+redirect_uri+is+missing&error_code=AUTH10010&error_hint=redirect_uri+is+mandatoryAUTH10011 — non-interactive client not supported
https://demo.cidaas.de/identity/error?error=unauthorized_client&error_description=unauthorized_client%3A+client_type+NON_INTERACTIVE+is+not+supported&error_code=AUTH10011&error_hint=please+any+client+other+than+NON_INTERACTIVEAUTH10012 — invalid ui_locales
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+invalid+ui_locales+passed&error_code=AUTH10012&error_hint=please+check+ui_locales+parameter%2C+it+must+be+a+valid+locale+stringAUTH10013 — unsupported response type
https://demo.cidaas.de/identity/error?error=unsupported_response_type&error_description=unsupported_response_type%3A+unsupported+response+type&error_code=AUTH10013&error_hint=response_type+must+match+the+application%27s+configured+response_types+%28code%2C+token%2C+id_token%2C+device_code%29AUTH10014 — implicit grant required
https://demo.cidaas.de/identity/error?error=unsupported_grant_type&error_description=unsupported_grant_type%3A+token+or+id_token+needs+implicit+grant_type+enabled+in+application+level&error_code=AUTH10014&error_hint=when+using+token+or+id_token+response_type%2C+please+make+sure+app+settings+has+implicit+grant_type+enabledAUTH10015 — authorization_code grant required
https://demo.cidaas.de/identity/error?error=unsupported_grant_type&error_description=unsupported_grant_type%3A+code+needs+authorization_code+grant_type+enabled+in+application+level&error_code=AUTH10015&error_hint=when+using+code+response_type%2C+please+make+sure+app+settings+has+authorization_code+grant_type+enabledAUTH10016 — unsupported response_mode
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+unsupported+response_mode%2C+possible+values+are+form_post+web_message+fragment+query&error_code=AUTH10016&error_hint=only+these+response_mode+are+supported.+form_post+web_message+fragment+queryAUTH10017 — nonce required for id_token
https://demo.cidaas.de/identity/error?error=invalid_request&error_description=invalid_request%3A+nonce+required+for+response_type+id_token&error_code=AUTH10017&error_hint=when+using+openid+scope+and+id_token+response_type%2C+you+must+provide+nonce+parameterNot Found