Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.
Single sign-on (SSO) lets your team sign in to CloudThinker through your company identity provider (IdP), such as Okta, Microsoft Entra ID or Google Workspace, so you manage access in one place. This page takes you from an unverified domain to a working, enforced SSO connection.
An organization on the Scale, Scale Plus or Enterprise plan. On other plans, Admin Settings → Identity and access shows Unlock SSO with the Scale plan and an Upgrade Plan button. See Pricing.
The organization Owner role. Only Owners can manage SSO; Admins get a permission error. See Roles and permissions.
Access to your DNS provider, to add one TXT record.
Your domain tells CloudThinker which sign-ins to send to your identity provider. Anyone whose email ends in a verified domain is routed to SSO.
1
Add the domain
Go to Admin Settings → Identity and access. On the Domain management card, click Add domain. Type your email domain (for example, example.com) and click the + button.A domain can belong to only one CloudThinker organization. If another organization already claimed it, you see an error and need to contact that organization’s Owner.
2
Add the DNS TXT record
In the domains table, click Verify next to the domain. The Verify domain dialog shows two values. Create a TXT record at your DNS provider with them:
DNS field
Value
Name / Host
_cloudthinker (your DNS provider appends .example.com)
Type
TXT
Value
The Record Value shown in the dialog, for example cloudthinker-domain-verification=Xy7...
3
Check verification
Wait for the record to propagate, then click Check verification. Propagation is often a few minutes but can take longer, depending on your DNS provider.Success state: the domain shows Verified in the table, and the Setup SSO button on the Single sign-on card is enabled.CloudThinker checks the record only when you click Check verification. It doesn’t re-check later, so you can delete the TXT record once the domain is verified.
You can verify more than one domain, for example example.com and example.co.uk. While the connection is active, you can’t remove the last verified domain; deactivate the connection first.
An organization has one SSO connection, and it serves every verified domain. Pick the protocol your identity provider supports. If it supports both, either works; SAML is the most common choice for enterprise IdPs.
Protocol
Use it when
Guide
SAML 2.0
Your IdP is Okta, Entra ID, Google Workspace, AWS IAM Identity Center, OneLogin, or another SAML 2.0 provider
On the Single sign-on card, click Setup SSO. Choose SAML 2.0 or OpenID Connect (OIDC) and click Next.
2
Follow your provider's guide
Open the SAML or OIDC guide above and complete the steps for your provider, then click Create Connection.Success state: the dialog shows SSO Connection Created. The connection is active right away, and sign-in through SSO is available but not yet required.
3
Run the connection test
On the Single sign-on card, click Manage. On the Overview tab, under Connection test, click Run connection test.The test checks your configuration, not a full sign-in. For SAML it checks the IdP Entity ID, SSO URL and certificate. For OIDC it checks that the discovery document is reachable, the issuer matches, the required endpoints exist, and the signing keys are reachable.Success state:All checks passed. If you see Some checks failed, the failing check and an error message are listed; fix the value on the Configuration tab and click Save Changes.
4
Sign in through SSO
In a private browser window, open the CloudThinker sign-in page at https://app.cloudthinker.io/auth/login, enter an email on your verified domain, and click Continue with SSO. You can also click Sign in with SSO and enter your Work email.Success state: your IdP’s sign-in page opens, and after you sign in you land back in CloudThinker with your name shown.
As soon as a connection is active, new people on your verified domain can’t create an account with Google or GitHub sign-in. They’re told “Your organization uses SSO. Please sign in with SSO.” Existing users can still pick Use an email code instead on the SSO screen until you require SSO.People who already have a CloudThinker account keep it. Their first SSO sign-in matches the account by email and links it to your IdP, so no duplicate is created.
Provisioning is how a CloudThinker account gets created for someone in your company. The Provisioning & directory sync card appears once the connection is active.
Mode
What happens
Pick it when
Manual
No accounts are created automatically. You invite each person.
You want to approve every member by hand
Just-in-time
An account is created the first time someone signs in through SSO. This is the default for new connections.
Anyone your IdP lets in should get access
SCIM
Your IdP creates, updates and deactivates users and groups automatically
You want joiners and leavers handled by your directory. See SCIM provisioning
For Just-in-time and SCIM, also set:
Auto-assigned organization role: Viewer (default), Developer or Admin. Start with Viewer and promote people later.
Auto-assigned workspaces: the workspaces new users join automatically. The default is your organization’s default workspace. See Workspaces.
With SSO optional, people on your domain can still sign in with an email code. Turning on Require SSO removes that option.
1
Confirm SSO works for you
Complete the sign-in test above with your own account first.
2
Turn on Require SSO
On the Single sign-on card, turn on Require SSO.Success state: the status bar shows SSO required. Users on your verified domains must sign in through your identity provider. Other sign-in methods return “Your organization requires SSO. Please sign in with SSO.”
Require SSO is checked at sign-in. It doesn’t sign out anyone who is already signed in; they move to SSO the next time they sign in. The toggle only shows while the connection is Active.Requiring SSO also changes invitations: you can only invite emails on a verified domain. With SCIM selected, manual invitations are turned off, and you manage people in your IdP.
Each organization has exactly one Owner, and the Owner is exempt from Require SSO, so an IdP outage or an expired certificate doesn’t lock you out. The Owner enters their email on the sign-in page, then picks Use an email code instead on the SSO screen. Everyone else waits until the IdP is back, or until the Owner turns off Require SSO on the Single sign-on card.
Before you turn on Require SSO, make sure the Owner’s email address receives mail outside your IdP, for example a monitored shared mailbox. That inbox is your way back in.
Click Manage on the Single sign-on card. The dialog has two tabs:
Tab
What you can do
Overview
See Status, Protocol, Verified domains and SCIM. Activate, Deactivate or Delete the connection, and run the connection test.
Configuration
Edit IdP values, for example a rotated certificate or a new client secret, then click Save Changes. For SAML, this tab also shows the SP Metadata URL.
Status
How it gets there
What users see
Active
Set automatically when you create a valid connection on a verified domain, or by clicking Activate
Sign-ins on your verified domains go to your IdP. Require SSO applies if it’s on.
Inactive
You click Deactivate
SSO isn’t used. People sign in with an email code, Google or GitHub, and Require SSO doesn’t apply. Your settings are kept, so Activate turns it back on.
Testing
Not set from the dashboard
Behaves like Active
Delete is permanent and does more than deactivating:
Require SSO goes away with the connection, and users fall back to email-code sign-in.
SCIM is removed: the token stops working, and group mappings and sync logs are deleted. Turn off provisioning in your IdP too.
Member accounts and their roles stay, including people created by just-in-time or SCIM provisioning.
The card reads “Verify at least one domain before configuring SSO.” Open Verify on the domain and confirm your TXT record name is _cloudthinker and its value matches the Record Value exactly. Some DNS providers add the domain for you, so a name of _cloudthinker.example.com can turn into _cloudthinker.example.com.example.com. Then click Check verification again.
Identity and access shows Unlock SSO with the Scale plan
Your organization’s plan doesn’t include SSO. Click Upgrade Plan or see Manage your subscription.
'Only organization owners can manage SSO settings'
You’re signed in as an Admin or lower. Ask an organization Owner to make the change, or to change your role.
A user can't sign in after you required SSO
Check that the user is assigned to the CloudThinker app in your identity provider. If they still fail, an Owner can turn off Require SSO while you fix the IdP side.
A user still signs in with an email code
Either Require SSO is off, the user’s email isn’t on a verified domain, or the user is an organization Owner, who is exempt by design.
Names show as email addresses
Your identity provider isn’t sending first and last name. Fix the attribute mapping in the SAML or OIDC guide.
Finding out why an SSO sign-in failed
Sign-ins aren’t recorded in audit logs, so start from the message the user sees on the CloudThinker sign-in page:
Message
Cause
”SSO login is not available for this domain”
The email’s domain isn’t verified, or the connection is Inactive
”No account found. Contact your administrator for access.”
Provisioning is Manual or SCIM, and the person has no account or invitation
”You are not a member of this organization. Please ask your administrator to invite you.”
The person has a CloudThinker account but isn’t in your organization, and just-in-time provisioning is off
”This organization has reached its seat limit.”
A pending invitation can’t be accepted because every seat is taken
”SSO authentication did not provide an email address”
Your IdP isn’t sending an email. Fix the attribute mapping
”SSO authentication failed. Please try again or contact your administrator.”
CloudThinker rejected the SAML or OIDC response, for example an unsigned or encrypted assertion, a wrong certificate or clock drift. See the SAML or OIDC troubleshooting
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CloudThinker","colors":{"primary":"#0c93c0","light":"#2897c1","dark":"#0c93c0"},"logo":{"light":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f","dark":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/dark.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=4252f33496bbaa527e5408338963a31e"},"favicon":"https://mintcdn.com/cloudthinker/PoYnb4baZ54aMMQW/favicon.ico?fit=max\u0026auto=format\u0026n=PoYnb4baZ54aMMQW\u0026q=85\u0026s=6570e99ed2a763d9632c8f933fe9c164","background":{"color":{"light":"#eef0f3","dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.com/invite/sRBWRWtaNR","label":"Community"},{"href":"https://cloudthinker.io/blogs","label":"Blog"},{"href":"https://cloudthinker.io/contact","label":"Contact us"}],"primary":{"type":"button","label":"Open app","href":"https://app.cloudthinker.io"}},"footer":{"socials":{"x":"https://x.com/cloudthinkerio?s=21","linkedin":"https://www.linkedin.com/company/cloud-thinker","github":"https://github.com/cloudthinker-ai","discord":"https://discord.com/invite/sRBWRWtaNR","youtube":"https://www.youtube.com/@cloudthinkerai"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Poppins"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"vi","href":""},{"language":"ja","href":""},{"language":"ko","href":""}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudthinker","hasAudioNarration":false,"actualSubdomain":"cloudthinker","customDomains":["docs.cloudthinker.io"],"gitSource":{"type":"github","owner":"nhat-tranvan","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adddcaa087fb564296de741","collectionId":"6a0410ef-ac7e-420e-bb09-2fef712f563e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adddcaa087fb564296de741"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{},"buildId":"6adddcaa087fb564296de741","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Platform","count":67},{"language":"vi","tag":"Nền tảng","count":64},{"language":"en","tag":"Platform","count":63},{"language":"ja","tag":"プラットフォーム","count":63},{"language":"ko","tag":"플랫폼","count":63},{"language":"default","tag":"Connections","count":52},{"language":"vi","tag":"Kết nối","count":49},{"language":"en","tag":"Connections","count":48},{"language":"ja","tag":"接続","count":48},{"language":"ko","tag":"연결","count":48},{"language":"en","tag":"Products","count":29},{"language":"ja","tag":"プロダクト","count":29},{"language":"ko","tag":"제품","count":29},{"language":"vi","tag":"Sản phẩm","count":29},{"language":"default","tag":"Resources","count":26},{"language":"default","tag":"Products","count":24},{"language":"default","tag":"Learn","count":18},{"language":"default","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"default","tag":"Get started","count":13},{"language":"en","tag":"Get started","count":13},{"language":"en","tag":"Resources","count":13},{"language":"ja","tag":"はじめに","count":13},{"language":"ja","tag":"リソース","count":13},{"language":"ko","tag":"시작하기","count":13},{"language":"ko","tag":"리소스","count":13},{"language":"vi","tag":"Bắt đầu","count":13},{"language":"vi","tag":"Tài nguyên","count":13},{"language":"en","tag":"Learn","count":12},{"language":"en","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ja","tag":"Observability \u0026 Monitoring","count":12},{"language":"ja","tag":"学ぶ","count":12},{"language":"ja","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ko","tag":"Observability \u0026 Monitoring","count":12},{"language":"ko","tag":"배우기","count":12},{"language":"ko","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"vi","tag":"Observability \u0026 Monitoring","count":12},{"language":"vi","tag":"Học","count":12},{"language":"vi","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"en","tag":"Monitoring","count":11},{"language":"en","tag":"Resolve","count":11},{"language":"ja","tag":"Resolve","count":11},{"language":"ko","tag":"Resolve","count":11},{"language":"vi","tag":"Resolve","count":11},{"language":"default","tag":"Resolve","count":9},{"language":"vi","tag":"Databases","count":9},{"language":"ja","tag":"Databases","count":8},{"language":"ko","tag":"Databases","count":8},{"language":"en","tag":"Work where you are","count":7},{"language":"default","tag":"Review","count":6},{"language":"default","tag":"Set up","count":6}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".ct-landing a,a.ct-featured{text-decoration:none!important}a.ct-featured{display:block;margin:1.25rem 0 1rem;padding:1.75rem 1.75rem 1.5rem;border:1px solid rgba(12,147,192,.45)!important;border-radius:16px;background:radial-gradient(120% 160% at 0 0,rgba(12,147,192,.14),transparent 55%),#fff;box-shadow:0 12px 32px -16px rgba(12,147,192,.45);transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}a.ct-featured:hover{border-color:#0c93c0!important;transform:translateY(-1px);box-shadow:0 16px 40px -16px rgba(12,147,192,.6)}.dark a.ct-featured{border-color:rgba(40,151,193,.45)!important;background:radial-gradient(120% 160% at 0 0,rgba(40,151,193,.16),transparent 55%),#05070a;box-shadow:0 12px 32px -16px rgba(40,151,193,.35)}.dark a.ct-featured:hover{border-color:#2897c1!important}.ct-featured-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.875rem}.ct-featured-icon{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(12,147,192,.12);color:#0a7aa0}.dark .ct-featured-icon{background:rgba(40,151,193,.14);color:#5bb8e0}.ct-eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#0a7aa0}.dark .ct-eyebrow{color:#5bb8e0}.ct-hero h1,.ct-title{font-weight:600;color:#0b1a2b}.ct-title{font-size:1.375rem;line-height:1.3}.dark .ct-card .ct-card-head span,.dark .ct-card h3,.dark .ct-hero h1,.dark .ct-section>h2,.dark .ct-step h3,.dark .ct-title{color:#f5f5f7}.ct-body{margin:.5rem 0 0!important;font-weight:400!important;font-size:1rem;max-width:46rem;color:#5b6577;line-height:1.6}.dark .ct-body,.dark .ct-hero .ct-promise,.dark .ct-hero p.ct-lead,.dark .ct-section>p.ct-section-lead{color:#a1a1a6}.ct-cta{display:inline-block;margin-top:1rem;font-weight:600;color:#0a7aa0}.dark .ct-cta{color:#5bb8e0}.ct-illustration{margin:1.5rem 0}.ct-illustration img{max-width:720px;margin:0 auto}.ct-iso-scene{margin:1.5rem 0 2rem;border:1px solid rgba(12,147,192,.18);border-radius:16px;background:#fff;overflow:hidden}.dark .ct-iso-scene{border-color:rgba(40,151,193,.22);background:#000}.ct-illustration img,.ct-iso-scene .ct-iso-svg{display:block;width:100%;height:auto}.ct-landing{max-width:1120px;margin:0 auto;padding:3rem 1.5rem 5rem}.ct-landing a{border-bottom-width:0}.ct-kicker{font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#0c93c0}.dark .ct-card .ct-tagline,.dark .ct-hero .ct-promise strong,.dark .ct-kicker{color:#2897c1}.ct-hero{text-align:center;padding:1.5rem 0 1rem}.ct-hero h1{margin:.75rem 0 0;font-size:clamp(2.25rem,5vw,3.75rem);line-height:1.05;letter-spacing:-.03em;-webkit-text-fill-color:currentColor;background:0 0}.ct-hero .ct-promise{margin:1rem auto 0;font-size:clamp(1.125rem,2.2vw,1.5rem);color:#5b6577}.ct-hero .ct-promise strong,.ct-section>h2{color:#0c93c0;font-weight:600}.ct-hero p.ct-lead{max-width:44rem;margin:1rem auto 0;font-size:1.0625rem;line-height:1.65;color:#5b6577}.ct-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.75rem}.ct-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.25rem;border-radius:999px;font-weight:600;font-size:.95rem;transition:transform .15s ease,background .15s ease}.ct-btn:hover{transform:translateY(-1px)}.ct-btn-primary{background:#0c93c0;color:#fff!important}.ct-btn-primary:hover{background:#0a7aa0}.ct-btn-ghost{border:1px solid rgba(12,147,192,.35)!important;color:#0b1a2b!important}.dark .ct-btn-ghost{color:#f5f5f7!important;border-color:rgba(40,151,193,.4)!important}.ct-landing .ct-iso-scene{margin-top:2.5rem}.ct-section{margin-top:4.5rem}.ct-section>h2{margin:.4rem 0 0;font-size:1.75rem;letter-spacing:-.02em;color:#0b1a2b;-webkit-text-fill-color:currentColor;background:0 0}.ct-section>p.ct-section-lead{margin:.5rem 0 0;color:#5b6577;max-width:46rem}.ct-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:1.5rem}.ct-step{display:block;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18)!important;background:#fff;transition:border-color .15s ease,transform .15s ease}.dark .ct-step{background:#05070a;border-color:rgba(40,151,193,.22)!important}.ct-step:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-step-num{display:inline-flex;width:1.75rem;height:1.75rem;border-radius:999px;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;color:#fff;background:#0c93c0}.ct-card h3,.ct-step h3{margin:.75rem 0 .25rem;font-size:1.05rem}.ct-card p,.ct-step p{margin:0;font-size:.925rem;line-height:1.55;color:#5b6577}.dark .ct-card p,.dark .ct-landing td,.dark .ct-step p{color:#a1a1a6}.ct-grid{display:grid;gap:1rem;margin-top:1.5rem}.ct-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ct-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.ct-card{display:flex;flex-direction:column;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18);background:#fff}.dark .ct-card{background:#05070a;border-color:rgba(40,151,193,.22)}.ct-card .ct-card-head{display:flex;align-items:center;gap:.6rem}.ct-card .ct-card-head span,.ct-card h3,.ct-step h3{font-weight:600;color:#0b1a2b}.ct-card .ct-tagline{margin-top:.75rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:#0c93c0}.ct-card .ct-links{margin-top:auto;padding-top:1rem;display:flex;gap:1rem;font-size:.9rem;font-weight:600}.ct-card .ct-links a{color:#0c93c0!important}.dark .ct-card .ct-links a,.dark .ct-card-head .ct-arrow,.dark .ct-landing td a{color:#2897c1!important}a.ct-card{transition:border-color .15s ease,transform .15s ease}a.ct-card:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-strip{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.25rem}.ct-strip a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border-radius:999px;border:1px solid rgba(12,147,192,.25)!important;font-size:.9rem;font-weight:500;color:#0b1a2b!important}.dark .ct-strip a{color:#f5f5f7!important;border-color:rgba(40,151,193,.3)!important}.ct-strip a:hover{border-color:#0c93c0!important}@media (max-width:900px){.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.ct-landing{padding:2rem 1rem 4rem}.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:minmax(0,1fr)}}.ct-landing table{width:100%;margin-top:1.25rem;border-collapse:collapse;font-size:.925rem}.ct-landing th{text-align:left;font-weight:600;padding:.7rem .9rem;border-bottom:1px solid rgba(12,147,192,.3)}.ct-landing td{vertical-align:top;padding:.8rem .9rem;border-bottom:1px solid rgba(12,147,192,.12);color:#5b6577;line-height:1.55}.ct-landing td:first-child{font-weight:600;color:#0b1a2b;width:22%}.dark .ct-landing td:first-child{color:#f5f5f7}.ct-landing td a{color:#0c93c0!important;font-weight:600}.ct-product{padding:1.1rem 1.2rem}.ct-product .ct-tagline{margin-top:.55rem;font-size:1rem}.ct-product p{margin-top:.3rem}.ct-card-head .ct-arrow{margin-left:auto;font-weight:500!important;color:#0c93c0!important;transition:transform .15s ease}a.ct-product:hover .ct-arrow{transform:translateX(3px)}html:not(.dark) .ct-card,html:not(.dark) .ct-iso-scene,html:not(.dark) .ct-step{background:#f6f7f9}html:not(.dark) .ct-iso-scene{border-color:rgba(12,147,192,.12)}html:not(.dark) #content-area,html:not(.dark) .prose,html:not(.dark) body{color:#2b3240}html:not(.dark) .prose :where(h1, h2, h3, h4, strong){color:#1c2230}html:not(.dark) .ct-card .ct-card-head span,html:not(.dark) .ct-card h3,html:not(.dark) .ct-hero h1,html:not(.dark) .ct-section>h2,html:not(.dark) .ct-step h3{color:#1c2230}"}],"page":{"pagePath":"guide/security/sso","slug":"/guide/security/sso","pageMetadata":{"title":"Set Up Single Sign-On","description":"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.","icon":"key","href":"/guide/security/sso"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Single sign-on (SSO) lets your team sign in to CloudThinker through your company identity provider (IdP), such as Okta, Microsoft Entra ID or Google Workspace, so you manage access in one place. This page takes you from an unverified domain to a working, enforced SSO connection.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`An organization on the `,_jsx(_components.strong,{children:`Scale`}),`, `,_jsx(_components.strong,{children:`Scale Plus`}),` or `,_jsx(_components.strong,{children:`Enterprise`}),` plan. On other plans, `,_jsx(_components.strong,{children:`Admin Settings → Identity and access`}),` shows `,_jsx(_components.strong,{children:`Unlock SSO with the Scale plan`}),` and an `,_jsx(_components.strong,{children:`Upgrade Plan`}),` button. See `,_jsx(_components.a,{href:`/guide/billing/pricing`,children:`Pricing`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The organization `,_jsx(_components.strong,{children:`Owner`}),` role. Only Owners can manage SSO; Admins get a permission error. See `,_jsx(_components.a,{href:`/guide/security/roles`,children:`Roles and permissions`}),`.`]}),`\n`,_jsx(_components.li,{children:`Access to your DNS provider, to add one TXT record.`}),`\n`,_jsx(_components.li,{children:`Admin access to your identity provider.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-setup-works`,children:`How setup works`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Admin Settings → Identity and access`}),` shows a `,_jsx(_components.strong,{children:`Setup progress`}),` checklist with three stages. Each one unlocks the next.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Stage`}),_jsx(_components.th,{children:`What you do`}),_jsx(_components.th,{children:`Done when`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`1. `,_jsx(_components.strong,{children:`Verify domain`})]}),_jsx(_components.td,{children:`Prove you own your email domain with a DNS TXT record`}),_jsxs(_components.td,{children:[`The domain shows `,_jsx(_components.strong,{children:`Verified`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`2. `,_jsx(_components.strong,{children:`Configure SSO`})]}),_jsx(_components.td,{children:`Create a SAML or OIDC connection to your identity provider`}),_jsxs(_components.td,{children:[`The connection status is `,_jsx(_components.strong,{children:`Active`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`3. `,_jsx(_components.strong,{children:`Provisioning`})]}),_jsx(_components.td,{children:`Choose how user accounts get created`}),_jsx(_components.td,{children:`Just-in-time or SCIM is selected`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`When all three are done, the checklist collapses into a status bar, for example `,_jsx(_components.strong,{children:`SSO Active`}),`, `,_jsx(_components.strong,{children:`SAML`}),`, `,_jsx(_components.strong,{children:`1 verified domain`}),`, `,_jsx(_components.strong,{children:`SSO optional`}),`.`]}),`\n`,_jsx(Frame,{caption:`Identity and access: verify a domain, configure SSO, then choose provisioning`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=0cb6bf1c3da56b8511b0a01438980045`,alt:`Admin Settings, Identity and access page with the setup checklist, Domain management card and Single sign-on card`,\"data-og-width\":`2176`,width:`2176`,\"data-og-height\":`1394`,height:`1394`,\"data-path\":`images/v2/sso-identity.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=280\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=d959cf596c4d8ca2dfde1f45b070cecc 280w, https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=560\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=c9c9413159f3e3be6f0317355615ecdd 560w, https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=840\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=075c198eea40da17e588b42a7ad70ce1 840w, https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=e8b41a6869c8a39dd6d558ee7af0f724 1100w, https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=398485d72df4735a0dcc592e058689ff 1650w, https://mintcdn.com/cloudthinker/x17Tte95w-p1fCkb/images/v2/sso-identity.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=x17Tte95w-p1fCkb\u0026q=85\u0026s=24bfd211ae1d3175e1c357a953c45aee 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`verify-your-domain`,children:`Verify your domain`}),`\n`,_jsx(_components.p,{children:`Your domain tells CloudThinker which sign-ins to send to your identity provider. Anyone whose email ends in a verified domain is routed to SSO.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Add the domain`,children:[_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Admin Settings → Identity and access`}),`. On the `,_jsx(_components.strong,{children:`Domain management`}),` card, click `,_jsx(_components.strong,{children:`Add domain`}),`. Type your email domain (for example, `,_jsx(_components.code,{children:`example.com`}),`) and click the `,_jsx(_components.strong,{children:`+`}),` button.`]}),_jsx(_components.p,{children:`A domain can belong to only one CloudThinker organization. If another organization already claimed it, you see an error and need to contact that organization’s Owner.`})]}),_jsxs(Step,{title:`Add the DNS TXT record`,children:[_jsxs(_components.p,{children:[`In the domains table, click `,_jsx(_components.strong,{children:`Verify`}),` next to the domain. The `,_jsx(_components.strong,{children:`Verify domain`}),` dialog shows two values. Create a TXT record at your DNS provider with them:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`DNS field`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Name / Host`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`_cloudthinker`}),` (your DNS provider appends `,_jsx(_components.code,{children:`.example.com`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Type`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`TXT`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Value`}),_jsxs(_components.td,{children:[`The `,_jsx(_components.strong,{children:`Record Value`}),` shown in the dialog, for example `,_jsx(_components.code,{children:`cloudthinker-domain-verification=Xy7...`})]})]})]})]})]}),_jsxs(Step,{title:`Check verification`,children:[_jsxs(_components.p,{children:[`Wait for the record to propagate, then click `,_jsx(_components.strong,{children:`Check verification`}),`. Propagation is often a few minutes but can take longer, depending on your DNS provider.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the domain shows `,_jsx(_components.strong,{children:`Verified`}),` in the table, and the `,_jsx(_components.strong,{children:`Setup SSO`}),` button on the `,_jsx(_components.strong,{children:`Single sign-on`}),` card is enabled.`]}),_jsxs(_components.p,{children:[`CloudThinker checks the record only when you click `,_jsx(_components.strong,{children:`Check verification`}),`. It doesn’t re-check later, so you can delete the TXT record once the domain is verified.`]})]})]}),`\n`,_jsxs(_components.p,{children:[`You can verify more than one domain, for example `,_jsx(_components.code,{children:`example.com`}),` and `,_jsx(_components.code,{children:`example.co.uk`}),`. While the connection is active, you can’t remove the last verified domain; deactivate the connection first.`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-the-connection`,children:`Create the connection`}),`\n`,_jsx(_components.p,{children:`An organization has one SSO connection, and it serves every verified domain. Pick the protocol your identity provider supports. If it supports both, either works; SAML is the most common choice for enterprise IdPs.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Protocol`}),_jsx(_components.th,{children:`Use it when`}),_jsx(_components.th,{children:`Guide`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SAML 2.0`})}),_jsx(_components.td,{children:`Your IdP is Okta, Entra ID, Google Workspace, AWS IAM Identity Center, OneLogin, or another SAML 2.0 provider`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/security/sso-saml`,children:`SAML setup`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`OpenID Connect (OIDC)`})}),_jsx(_components.td,{children:`Your IdP issues OAuth 2.0 clients and publishes an OIDC discovery document`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/security/sso-oidc`,children:`OIDC setup`})})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Start the wizard`,children:_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Single sign-on`}),` card, click `,_jsx(_components.strong,{children:`Setup SSO`}),`. Choose `,_jsx(_components.strong,{children:`SAML 2.0`}),` or `,_jsx(_components.strong,{children:`OpenID Connect (OIDC)`}),` and click `,_jsx(_components.strong,{children:`Next`}),`.`]})}),_jsxs(Step,{title:`Follow your provider's guide`,children:[_jsxs(_components.p,{children:[`Open the SAML or OIDC guide above and complete the steps for your provider, then click `,_jsx(_components.strong,{children:`Create Connection`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the dialog shows `,_jsx(_components.strong,{children:`SSO Connection Created`}),`. The connection is active right away, and sign-in through SSO is available but not yet required.`]})]}),_jsxs(Step,{title:`Run the connection test`,children:[_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Single sign-on`}),` card, click `,_jsx(_components.strong,{children:`Manage`}),`. On the `,_jsx(_components.strong,{children:`Overview`}),` tab, under `,_jsx(_components.strong,{children:`Connection test`}),`, click `,_jsx(_components.strong,{children:`Run connection test`}),`.`]}),_jsx(_components.p,{children:`The test checks your configuration, not a full sign-in. For SAML it checks the IdP Entity ID, SSO URL and certificate. For OIDC it checks that the discovery document is reachable, the issuer matches, the required endpoints exist, and the signing keys are reachable.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` `,_jsx(_components.strong,{children:`All checks passed`}),`. If you see `,_jsx(_components.strong,{children:`Some checks failed`}),`, the failing check and an error message are listed; fix the value on the `,_jsx(_components.strong,{children:`Configuration`}),` tab and click `,_jsx(_components.strong,{children:`Save Changes`}),`.`]})]}),_jsxs(Step,{title:`Sign in through SSO`,children:[_jsxs(_components.p,{children:[`In a private browser window, open the CloudThinker sign-in page at `,_jsx(_components.code,{children:`https://app.cloudthinker.io/auth/login`}),`, enter an email on your verified domain, and click `,_jsx(_components.strong,{children:`Continue with SSO`}),`. You can also click `,_jsx(_components.strong,{children:`Sign in with SSO`}),` and enter your `,_jsx(_components.strong,{children:`Work email`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` your IdP’s sign-in page opens, and after you sign in you land back in CloudThinker with your name shown.`]})]})]}),`\n`,_jsxs(Note,{children:[_jsxs(_components.p,{children:[`As soon as a connection is active, new people on your verified domain can’t create an account with Google or GitHub sign-in. They’re told “Your organization uses SSO. Please sign in with SSO.” Existing users can still pick `,_jsx(_components.strong,{children:`Use an email code instead`}),` on the SSO screen until you require SSO.`]}),_jsx(_components.p,{children:`People who already have a CloudThinker account keep it. Their first SSO sign-in matches the account by email and links it to your IdP, so no duplicate is created.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`choose-how-users-are-provisioned`,children:`Choose how users are provisioned`}),`\n`,_jsxs(_components.p,{children:[`Provisioning is how a CloudThinker account gets created for someone in your company. The `,_jsx(_components.strong,{children:`Provisioning \u0026 directory sync`}),` card appears once the connection is active.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Mode`}),_jsx(_components.th,{children:`What happens`}),_jsx(_components.th,{children:`Pick it when`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Manual`})}),_jsx(_components.td,{children:`No accounts are created automatically. You invite each person.`}),_jsx(_components.td,{children:`You want to approve every member by hand`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Just-in-time`})}),_jsx(_components.td,{children:`An account is created the first time someone signs in through SSO. This is the default for new connections.`}),_jsx(_components.td,{children:`Anyone your IdP lets in should get access`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SCIM`})}),_jsx(_components.td,{children:`Your IdP creates, updates and deactivates users and groups automatically`}),_jsxs(_components.td,{children:[`You want joiners and leavers handled by your directory. See `,_jsx(_components.a,{href:`/guide/security/scim`,children:`SCIM provisioning`})]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`For `,_jsx(_components.strong,{children:`Just-in-time`}),` and `,_jsx(_components.strong,{children:`SCIM`}),`, also set:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-assigned organization role`}),`: `,_jsx(_components.strong,{children:`Viewer`}),` (default), `,_jsx(_components.strong,{children:`Developer`}),` or `,_jsx(_components.strong,{children:`Admin`}),`. Start with Viewer and promote people later.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-assigned workspaces`}),`: the workspaces new users join automatically. The default is your organization’s default workspace. See `,_jsx(_components.a,{href:`/guide/workspaces`,children:`Workspaces`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`require-sso`,children:`Require SSO`}),`\n`,_jsxs(_components.p,{children:[`With SSO optional, people on your domain can still sign in with an email code. Turning on `,_jsx(_components.strong,{children:`Require SSO`}),` removes that option.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Confirm SSO works for you`,children:_jsx(_components.p,{children:`Complete the sign-in test above with your own account first.`})}),_jsxs(Step,{title:`Turn on Require SSO`,children:[_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Single sign-on`}),` card, turn on `,_jsx(_components.strong,{children:`Require SSO`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the status bar shows `,_jsx(_components.strong,{children:`SSO required`}),`. Users on your verified domains must sign in through your identity provider. Other sign-in methods return “Your organization requires SSO. Please sign in with SSO.”`]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Require SSO`}),` is checked at sign-in. It doesn’t sign out anyone who is already signed in; they move to SSO the next time they sign in. The toggle only shows while the connection is `,_jsx(_components.strong,{children:`Active`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Requiring SSO also changes invitations: you can only invite emails on a verified domain. With `,_jsx(_components.strong,{children:`SCIM`}),` selected, manual invitations are turned off, and you manage people in your IdP.`]}),`\n`,_jsx(Heading,{level:`3`,id:`if-your-idp-is-unavailable`,children:`If your IdP is unavailable`}),`\n`,_jsxs(_components.p,{children:[`Each organization has exactly one Owner, and the Owner is exempt from `,_jsx(_components.strong,{children:`Require SSO`}),`, so an IdP outage or an expired certificate doesn’t lock you out. The Owner enters their email on the sign-in page, then picks `,_jsx(_components.strong,{children:`Use an email code instead`}),` on the SSO screen. Everyone else waits until the IdP is back, or until the Owner turns off `,_jsx(_components.strong,{children:`Require SSO`}),` on the `,_jsx(_components.strong,{children:`Single sign-on`}),` card.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Before you turn on `,_jsx(_components.strong,{children:`Require SSO`}),`, make sure the Owner’s email address receives mail outside your IdP, for example a monitored shared mailbox. That inbox is your way back in.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`manage-or-remove-the-connection`,children:`Manage or remove the connection`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Manage`}),` on the `,_jsx(_components.strong,{children:`Single sign-on`}),` card. The dialog has two tabs:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tab`}),_jsx(_components.th,{children:`What you can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Overview`})}),_jsxs(_components.td,{children:[`See `,_jsx(_components.strong,{children:`Status`}),`, `,_jsx(_components.strong,{children:`Protocol`}),`, `,_jsx(_components.strong,{children:`Verified domains`}),` and `,_jsx(_components.strong,{children:`SCIM`}),`. `,_jsx(_components.strong,{children:`Activate`}),`, `,_jsx(_components.strong,{children:`Deactivate`}),` or `,_jsx(_components.strong,{children:`Delete`}),` the connection, and run the connection test.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Configuration`})}),_jsxs(_components.td,{children:[`Edit IdP values, for example a rotated certificate or a new client secret, then click `,_jsx(_components.strong,{children:`Save Changes`}),`. For SAML, this tab also shows the `,_jsx(_components.strong,{children:`SP Metadata URL`}),`.`]})]})]})]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`How it gets there`}),_jsx(_components.th,{children:`What users see`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Active`})}),_jsxs(_components.td,{children:[`Set automatically when you create a valid connection on a verified domain, or by clicking `,_jsx(_components.strong,{children:`Activate`})]}),_jsxs(_components.td,{children:[`Sign-ins on your verified domains go to your IdP. `,_jsx(_components.strong,{children:`Require SSO`}),` applies if it’s on.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Inactive`})}),_jsxs(_components.td,{children:[`You click `,_jsx(_components.strong,{children:`Deactivate`})]}),_jsxs(_components.td,{children:[`SSO isn’t used. People sign in with an email code, Google or GitHub, and `,_jsx(_components.strong,{children:`Require SSO`}),` doesn’t apply. Your settings are kept, so `,_jsx(_components.strong,{children:`Activate`}),` turns it back on.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Testing`})}),_jsx(_components.td,{children:`Not set from the dashboard`}),_jsxs(_components.td,{children:[`Behaves like `,_jsx(_components.strong,{children:`Active`})]})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Delete`}),` is permanent and does more than deactivating:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Require SSO`}),` goes away with the connection, and users fall back to email-code sign-in.`]}),`\n`,_jsx(_components.li,{children:`SCIM is removed: the token stops working, and group mappings and sync logs are deleted. Turn off provisioning in your IdP too.`}),`\n`,_jsx(_components.li,{children:`Member accounts and their roles stay, including people created by just-in-time or SCIM provisioning.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`To pause SSO, deactivate instead.`}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Setup SSO is disabled`,id:`setup-sso-is-disabled`,children:_jsxs(_components.p,{children:[`The card reads “Verify at least one domain before configuring SSO.” Open `,_jsx(_components.strong,{children:`Verify`}),` on the domain and confirm your TXT record name is `,_jsx(_components.code,{children:`_cloudthinker`}),` and its value matches the `,_jsx(_components.strong,{children:`Record Value`}),` exactly. Some DNS providers add the domain for you, so a name of `,_jsx(_components.code,{children:`_cloudthinker.example.com`}),` can turn into `,_jsx(_components.code,{children:`_cloudthinker.example.com.example.com`}),`. Then click `,_jsx(_components.strong,{children:`Check verification`}),` again.`]})}),_jsx(Accordion,{title:`Identity and access shows Unlock SSO with the Scale plan`,id:`identity-and-access-shows-unlock-sso-with-the-scale-plan`,children:_jsxs(_components.p,{children:[`Your organization’s plan doesn’t include SSO. Click `,_jsx(_components.strong,{children:`Upgrade Plan`}),` or see `,_jsx(_components.a,{href:`/guide/billing/subscription`,children:`Manage your subscription`}),`.`]})}),_jsx(Accordion,{title:`'Only organization owners can manage SSO settings'`,id:`only-organization-owners-can-manage-sso-settings`,children:_jsxs(_components.p,{children:[`You’re signed in as an Admin or lower. Ask an organization Owner to make the change, or to `,_jsx(_components.a,{href:`/guide/security/roles`,children:`change your role`}),`.`]})}),_jsx(Accordion,{title:`A user can't sign in after you required SSO`,id:`a-user-cant-sign-in-after-you-required-sso`,children:_jsxs(_components.p,{children:[`Check that the user is assigned to the CloudThinker app in your identity provider. If they still fail, an Owner can turn off `,_jsx(_components.strong,{children:`Require SSO`}),` while you fix the IdP side.`]})}),_jsx(Accordion,{title:`A user still signs in with an email code`,id:`a-user-still-signs-in-with-an-email-code`,children:_jsxs(_components.p,{children:[`Either `,_jsx(_components.strong,{children:`Require SSO`}),` is off, the user’s email isn’t on a verified domain, or the user is an organization Owner, who is exempt by design.`]})}),_jsx(Accordion,{title:`Names show as email addresses`,id:`names-show-as-email-addresses`,children:_jsxs(_components.p,{children:[`Your identity provider isn’t sending first and last name. Fix the attribute mapping in the `,_jsx(_components.a,{href:`/guide/security/sso-saml`,children:`SAML`}),` or `,_jsx(_components.a,{href:`/guide/security/sso-oidc`,children:`OIDC`}),` guide.`]})}),_jsxs(Accordion,{title:`Finding out why an SSO sign-in failed`,id:`finding-out-why-an-sso-sign-in-failed`,children:[_jsxs(_components.p,{children:[`Sign-ins aren’t recorded in `,_jsx(_components.a,{href:`/guide/security/audit-logs`,children:`audit logs`}),`, so start from the message the user sees on the CloudThinker sign-in page:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Message`}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”SSO login is not available for this domain”`}),_jsxs(_components.td,{children:[`The email’s domain isn’t verified, or the connection is `,_jsx(_components.strong,{children:`Inactive`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”No account found. Contact your administrator for access.”`}),_jsxs(_components.td,{children:[`Provisioning is `,_jsx(_components.strong,{children:`Manual`}),` or `,_jsx(_components.strong,{children:`SCIM`}),`, and the person has no account or invitation`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”You are not a member of this organization. Please ask your administrator to invite you.”`}),_jsx(_components.td,{children:`The person has a CloudThinker account but isn’t in your organization, and just-in-time provisioning is off`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”This organization has reached its seat limit.”`}),_jsx(_components.td,{children:`A pending invitation can’t be accepted because every seat is taken`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”SSO authentication did not provide an email address”`}),_jsx(_components.td,{children:`Your IdP isn’t sending an email. Fix the attribute mapping`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”SSO authentication failed. Please try again or contact your administrator.”`}),_jsxs(_components.td,{children:[`CloudThinker rejected the SAML or OIDC response, for example an unsigned or encrypted assertion, a wrong certificate or clock drift. See the `,_jsx(_components.a,{href:`/guide/security/sso-saml#troubleshooting`,children:`SAML`}),` or `,_jsx(_components.a,{href:`/guide/security/sso-oidc#troubleshooting`,children:`OIDC`}),` troubleshooting`]})]})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`SAML setup`,icon:`shield`,href:`/guide/security/sso-saml`,children:_jsx(_components.p,{children:`Step-by-step SAML configuration for Okta, Entra ID, Google Workspace and more`})}),_jsx(Card,{title:`OIDC setup`,icon:`id-badge`,href:`/guide/security/sso-oidc`,children:_jsx(_components.p,{children:`Step-by-step OIDC configuration for Google, Entra ID, Okta and others`})}),_jsx(Card,{title:`SCIM provisioning`,icon:`users-gear`,href:`/guide/security/scim`,children:_jsx(_components.p,{children:`Let your directory add and remove users automatically`})}),_jsx(Card,{title:`Roles and permissions`,icon:`user-shield`,href:`/guide/security/roles`,children:_jsx(_components.p,{children:`Decide what auto-provisioned users can do`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Set Up Single Sign-On","description":"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.","icon":"key","href":"/guide/security/sso"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"How setup works","slug":"how-setup-works","depth":2,"children":[]},{"title":"Verify your domain","slug":"verify-your-domain","depth":2,"children":[]},{"title":"Create the connection","slug":"create-the-connection","depth":2,"children":[]},{"title":"Choose how users are provisioned","slug":"choose-how-users-are-provisioned","depth":2,"children":[]},{"title":"Require SSO","slug":"require-sso","depth":2,"children":[{"title":"If your IdP is unavailable","slug":"if-your-idp-is-unavailable","depth":3,"children":[]}]},{"title":"Manage or remove the connection","slug":"manage-or-remove-the-connection","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cloudthinker","siteName":"CloudThinker","title":"Set Up Single Sign-On - CloudThinker","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guide/security/sso","matchLevel":0},"vi":{"href":"/vi/guide/security/sso","matchLevel":1},"ja":{"href":"/ja/guide/security/sso","matchLevel":1},"ko":{"href":"/ko/guide/security/sso","matchLevel":1}}},"lastModified":"2026-10-25T10:41:40.913Z","originalFileLocation":"guide/security/sso.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set Up Single Sign-On - CloudThinker\">\u003cmeta data-mint-head property=\"og:description\" content=\"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudThinker\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudthinker.io/guide/security/sso\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Identity+and+access\u0026amp;title=Set+Up+Single+Sign-On\u0026amp;description=Verify+your+email+domain%2C+connect+a+SAML+or+OIDC+identity+provider%2C+choose+provisioning%2C+and+require+SSO+for+your+organization.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=18c342c469244f1d4ba1b738cdd00feff2292277b80b697a37a338041295ed9c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Set Up Single Sign-On - CloudThinker\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Identity+and+access\u0026amp;title=Set+Up+Single+Sign-On\u0026amp;description=Verify+your+email+domain%2C+connect+a+SAML+or+OIDC+identity+provider%2C+choose+provisioning%2C+and+require+SSO+for+your+organization.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=18c342c469244f1d4ba1b738cdd00feff2292277b80b697a37a338041295ed9c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0c93c0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudthinker.io/guide/security/sso\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guide/security/sso.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.cloudthinker.io/guide/security/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.cloudthinker.io/vi/guide/security/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.cloudthinker.io/ja/guide/security/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.cloudthinker.io/ko/guide/security/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.cloudthinker.io/guide/security/sso\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudthinker.io/#organization\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudthinker.io#website\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudthinker.io/guide/security/sso#webpage\",\"url\":\"https://docs.cloudthinker.io/guide/security/sso\",\"name\":\"Set Up Single Sign-On\",\"description\":\"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\",\"dateModified\":\"2026-10-25T10:41:40.913Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudthinker.io/guide/security/sso#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudthinker.io/guide/security/sso#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CloudThinker\",\"item\":\"https://docs.cloudthinker.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set Up Single Sign-On\",\"item\":\"https://docs.cloudthinker.io/guide/security/sso\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cloudthinker.io/guide/security/sso#article\",\"headline\":\"Set Up Single Sign-On\",\"name\":\"Set Up Single Sign-On\",\"description\":\"Verify your email domain, connect a SAML or OIDC identity provider, choose provisioning, and require SSO for your organization.\",\"url\":\"https://docs.cloudthinker.io/guide/security/sso\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudthinker.io/guide/security/sso#webpage\"},\"dateModified\":\"2026-10-25T10:41:40.913Z\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudThinker\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudThinker","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":""}]},{"tab":"Products","pages":[{"title":"Products","href":"/guide/incident/overview"}]},{"tab":"Platform","pages":[{"title":"Platform","href":"/guide/connections/overview"}]},{"tab":"Enterprise","groups":[{"group":"Security and trust","pages":[{"title":"Security and Trust","icon":"shield-halved","href":"/guide/security/overview"},{"title":"Data Protection","icon":"user-shield","href":"/guide/security/data-protection"},{"title":"Custom Guardrails","icon":"eye-slash","href":"/guide/security/custom-guardrails"},{"title":"Bring Your Own Key (BYOK)","description":"Run CloudThinker's AI model calls on your own Bedrock, Anthropic, FPT Cloud, Claude Code, or Codex account, per organization or workspace.","icon":"key","href":"/guide/byok"}]},{"group":"Identity and access","pages":[{"title":"Set Up Single Sign-On","icon":"key","href":"/guide/security/sso"},{"title":"Set Up SAML SSO","description":"Connect Okta, Microsoft Entra ID, Google Workspace, AWS IAM Identity Center, OneLogin or any SAML 2.0 identity provider.","icon":"shield","href":"/guide/security/sso-saml"},{"title":"Set Up OIDC SSO","icon":"id-badge","href":"/guide/security/sso-oidc"},{"title":"SCIM Provisioning","icon":"users-gear","href":"/guide/security/scim"},{"title":"Roles and Permissions","icon":"user-shield","href":"/guide/security/roles"}]},{"group":"Governance","pages":[{"title":"Audit Logs","icon":"clipboard-list","href":"/guide/security/audit-logs"}]}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/guide/api/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/learn/aio/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Pricing","href":"https://cloudthinker.io/pricing"}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/guide/security/sso"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/guide/security/sso"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/guide/security/sso"}]}]},"title":"Set Up Single Sign-On - CloudThinker","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-B0bJ23PC.js","DynamicMarkdown-UGQuxDKp.js","zoom-image-lightbox-B0E5HDf_.js","lightbox-handle-r17bVUz3.js"]}