Managing external identities to enable secure access for partners, customers, and other non-employees
The error indicates that the continuation_token used in the final call of the sign-up flow is invalid. In the native authentication sign-up flow, continuation tokens are tightly scoped to a specific step and must be:
- Taken from the immediately preceding successful response.
- Used with the correct endpoint and grant_type expected for that step.
- Unexpired and unmodified.
From the documented behavior for sign-up:
-
/signup/v1.0/startand/signup/v1.0/challengereturn acontinuation_tokenthat is then used with/signup/v1.0/continue. - When submitting a one-time passcode (OTP) sent to email, the request to
/signup/v1.0/continuemust use:POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue Content-Type: application/x-www-form-urlencoded continuation_token=... &client_id=... &grant_type=oob &oob={otp_code} - When additional user attributes are required, the same
/signup/v1.0/continueendpoint is used with the continuation token and the required attributes.
The context also defines error semantics:
-
invalid_requestcan be returned when continuation token validation fails or when required parameters (such asclient_id) are missing or invalid. -
invalid_grantis used when the continuation token is invalid in some flows, but for sign-up the docs explicitly stateinvalid_requestcan be used when continuation token validation fails. -
expired_tokenis returned when the continuation token is expired.
Given the sample error:
"error": "invalid_request",
"error_description": "AADSTS55200: The continuation_token is invalid.
this matches the documented case where continuation token validation fails.
To resolve this in the sign-up flow:
- Ensure the correct endpoint and grant_type are used for the step:
- For OTP verification during sign-up:
/signup/v1.0/continuewithgrant_type=oobandoob={otp_code}. - Do not use
grant_type=passwordwith the sign-up continuation token unless the documentation for that specific step explicitly requires it (the provided context only showsgrant_type=oobfor OTP in sign-up and reset-password flows).
- For OTP verification during sign-up:
- Ensure the continuation_token is the latest one:
- Use the
continuation_tokenreturned in the last successful response (for example, from/signup/v1.0/challengeor from anattributes_requiredresponse) without modification.
- Use the
- If the flow returns
attributes_requiredorverification_required:- Read
required_attributesorunverified_attributesfrom the error response. - Call
/signup/v1.0/continueagain with the same continuation token plus the required attributes or verification data.
- Read
- If the token might be expired:
- The service would typically return
expired_token, but if any doubt exists, restart the sign-up flow from/signup/v1.0/startto obtain a fresh continuation token and repeat the documented sequence.
- The service would typically return
In short, the continuation token from the sign-up flow cannot be used arbitrarily with grant_type=password. It must be used exactly as specified for the sign-up step (for example, with grant_type=oob when submitting the OTP) against /signup/v1.0/continue, and always taken from the immediately preceding successful response.
References: