JumpCloud: callback

Overview

Receives the user back from JumpCloud and issues a one-time exchange code.

Handled by us; documented for completeness.

Nothing to send.

The user is redirected onward with a code. JumpCloud sends the browser here after JumpCloud: start sign-in. On success, the browser goes on to the dashboard's SSO callback page with ?code=, a one-time code (64 hex characters) that expires after 2 minutes by default; the dashboard redeems it with JumpCloud: exchange the code. On failure, it goes to the same page with ?error= and a reason.

Prerequisites

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/auth/sso/jumpcloud/callback

Authentication

Public (no token)

  • The user is identified by JumpCloud, and matched to a user by email address.
  • The state must match the one stored in the browser's session when the sign-in started; otherwise the sign-in fails with error=sso_failed.
  • Only users with JumpCloud sign-in turned on, whose company is a partner, an account or a location, and who aren't locked or deactivated, get a code.

Rate limit

10 requests per minute, counted per client IP address. See Rate limits.

Request parameters

JumpCloud adds these to the URL.

ParameterInTypeRequiredDescription
codequerystringYesJumpCloud's authorization code.
statequerystringYesThe state sent in the redirect to JumpCloud. Checked against the browser's session.

Request body

None.

Request payload

None.

Response body

None. The response is always a 302 redirect to the dashboard's SSO callback page.

Query parameterDescription
codeOn success: the one-time code to redeem with JumpCloud: exchange the code.
errorOn failure, the reason: sso_failed (JumpCloud sign-in couldn't be completed, for example a missing or mismatched state), sso_no_email (JumpCloud returned no email address), no_user (no user has that email), sso_not_enabled (JumpCloud sign-in isn't turned on for the user), no_company (the user has no company), role_not_allowed (the user isn't a partner, account or location user), account_locked (locked after failed sign-ins), account_inactive (the user is deactivated).

Response payload

HTTP/1.1 302 Found
Location: https://production.shoutaboutus.com/auth/sso/callback?code=<one-time-code>

Examples

Success payload

See Response payload.

Error payload

302 Sign-in refused

HTTP/1.1 302 Found
Location: https://production.shoutaboutus.com/auth/sso/callback?error=sso_not_enabled

429 Too many requests

{
  "message": "Too Many Attempts."
}
StatusMeaning
302Redirect to the dashboard, with code on success or error on failure.
429More than 10 requests in a minute from your IP address.
500Unexpected server error.

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/auth/sso/jumpcloud/callback?code=<oidc_code>&state=<state>"

Did this page help you?