Single sign-on, JIT and MFA policy
Org admins (ManageSecurity) manage the policy at GET|PUT /v1/orgs/{org}/sso or in Settings, Single sign-on and MFA.
Fields
Field | Meaning |
|---|---|
| The Atlas connection that counts as "signed in through SSO". |
| Email domains you claim. Only verified domains enforce or create members. |
| People on a verified domain must sign in through the connection, else 403 |
| Role of a member created on first SSO sign-in (default |
| Projects where the new member gets the same role. |
| Up to two members who may sign in without SSO (lockout recovery). MFA still applies. |
| The session's |
| 1 to 12; caps the console session lifetime (default 12 h). |
Verifying a domain
Save the policy with the domain listed. The response carries
domain_challenge.Publish a DNS TXT record
_watchtower-challenge.<domain>with exactly that value.POST /v1/orgs/{org}/sso/domains/{domain}/verify. The lookup runs over DNS-over-HTTPS (WT_DNS_DOH_URL, default Cloudflare JSON API) with a 5 second timeout. Removing a domain from the list drops its verification.
How sign-in decides
After the Atlas token is verified, every org whose verified domain matches the email domain, plus every org the user belongs to, is consulted. The strictest rule wins: one unmet enforce_sso or require_mfa blocks the sign-in; the shortest max_session_hours applies. Orgs that are unrelated to the user are not consulted. The connection is read from the token claim named by WT_ATLAS_SSO_CLAIM (default connection_id) and is not re-verified against Atlas.
Every policy change is audited (org_sso.update, org_sso.domain_verify, org_sso.jit). Turning on enforcement without a working connection locks out everyone except the break-glass users, so set at least one.