Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.
This guide connects Microsoft Entra ID (formerly Azure Active Directory) to your Hyperstack organization. You need an administrator in Hyperstack and a person who can add enterprise applications in Entra, such as a Cloud Application Administrator.
Single sign-on is on the Enterprise plan. Read the overview first to see who can sign in.
We recommend SAML. With SAML, the Microsoft My Apps tile opens Hyperstack, and a new Entra certificate reaches us by itself from the metadata URL. OIDC uses a client secret. Entra secrets end after a time you choose, and SSO sign-in stops when the secret ends.
In the Microsoft Entra admin center, open Enterprise applications → New application → Create your own application. Name it Hyperstack, pick Integrate any other application you don’t find in the gallery (Non-gallery) and click Create.
2
Open the SAML settings
In the app, open Single sign-on and pick SAML. Then click Edit in Basic SAML Configuration.
3
Copy our values into Entra
Step 2 of the Hyperstack page, Add Hyperstack to Microsoft Entra, shows each value with a copy button and Entra’s own field name:
Entra field
Value from Hyperstack
Identifier (Entity ID)
Copy Identifier (Entity ID). Click Add identifier if the list is empty.
Reply URL (Assertion Consumer Service URL)
Copy Reply URL (Assertion Consumer Service URL).
Sign on URL (Optional)
Copy Sign on URL (Optional).
Relay State (Optional)
Leave it empty.
Logout Url (Optional)
Leave it empty.
Click Save.
You can also click Download our metadata (XML) in Hyperstack, then Upload metadata file at the top of the Entra SAML page. Entra then fills these fields for you.
4
Leave the claims as they are
Entra already sends the email, given name and surname claims in Attributes & Claims. Leave them as they are.The emailaddress claim comes from the person’s Email field in Entra (user.mail). If your people have no Email field, but their user principal name is their work email, change the emailaddress claim to user.userprincipalname.
5
Assign people to the app
Open Users and groups in the app and click Add user/group. Add yourself and your team, or a group of them.Assigned people still need to be on your Hyperstack team, or have an invitation. See Who can sign in with SSO.
6
Copy the App Federation Metadata Url into Hyperstack
On the Entra Single sign-on page, find SAML Certificates and copy the App Federation Metadata Url.In Hyperstack, step 3 Connect Microsoft Entra, paste it in Metadata URL and click Save connection. You see Connected to Microsoft Entra with the issuer and the date the certificate ends.Can’t use the metadata URL? Click Enter the details by hand instead. Fill in Sign-in URL (IdP SSO URL) with Entra’s Login URL, Issuer (IdP entity ID) with Entra’s Microsoft Entra Identifier, and upload the Certificate (Base64) file in Signing certificate. You must then paste each new certificate yourself.
An Entra SAML certificate lasts 3 years. Entra emails the address in Notification Email before it ends. Hyperstack also shows a notice on Settings → Single sign-on from 30 days before the end.To change the certificate, make a new one in Entra and make it Active.
With the metadata URL, Hyperstack reads it once a day and adds the new certificate next to the old one. A new certificate works within 24 hours after Entra publishes it. After Entra makes the new certificate Active, click Refresh certificates on Settings → Single sign-on to add it at once. SSO stays on. Hyperstack keeps up to 3 certificates, so old and new both work until the old one ends.
Without it, click Update certificate on the notice, or Edit connection, and add the new certificate. This turns SSO off until a new test passes. See Change the connection.
In the Microsoft Entra admin center, open App registrations → New registration. Name it Hyperstack. Under Supported account types, keep Accounts in this organizational directory only.Under Redirect URI, pick Web and paste the Redirect URI (Web) from step 2 in Hyperstack. Click Register.
2
Add a client secret
Open Certificates & secrets → Client secrets → New client secret. Enter a description, choose when it Expires, and click Add.Copy the Value column now, not the Secret ID. Entra shows the value only once.
Note the date in Expires. SSO sign-in stops when the secret ends, and Hyperstack doesn’t remind you of this date. Before it ends, add a new secret in Entra, then click Edit connection and Replace secret in Hyperstack. A new secret turns SSO off until a new test passes, so plan the change. See Change the connection.
3
Add the email claim
Open Token configuration → Add optional claim. Pick ID, tick email and click Add. If Entra asks, tick Turn on the Microsoft Graph email permission.
4
Copy the client values into Hyperstack
On the app’s Overview, copy the Application (client) ID and the Directory (tenant) ID.In Hyperstack, step 3 Connect Microsoft Entra, fill in:
Issuer URL: https://login.microsoftonline.com/<tenant ID>/v2.0. Put your Directory (tenant) ID in place of <tenant ID>. Hyperstack doesn’t accept common or organizations here.
Client ID: the Application (client) ID.
Client secret: the Value you copied.
Click Save connection. Hyperstack never shows the secret again.
5
Assign people to the app
Open Enterprise applications and find Hyperstack. In Properties, set Assignment required? to Yes and save. Then open Users and groups and add yourself and your team.
Add your domain, such as acme.com, and add the TXT record that Hyperstack shows to your DNS. See Verify a domain.
2
Click Test sign-in
A new tab opens Microsoft’s sign-in page. Sign in there. The test doesn’t change your account or sign you in.When the test passes, you see Test passed with the email, the name and the Microsoft Entra ID that Entra sent. If it fails, the page says what to change. See Test sign-in results.
3
Click Turn on SSO
You see SSO is on. Your team can sign in with Microsoft Entra. Passwords keep working until you enforce SSO.
Only when their email is on one of your verified domains. A guest with an email on another company’s domain can’t sign in with your SSO.
The test says no email came back
For SAML, check that the emailaddress claim is in Attributes & Claims, and that the person has an Email in Entra. For OIDC, add the optional claim email to the ID token.
The test says Microsoft Entra didn't accept the client ID or secret
Check that you copied the secret’s Value, not its Secret ID, and that the secret hasn’t expired.
Why does Hyperstack check the email domain?
Entra lets a tenant administrator type any email for a user. Hyperstack trusts an email only on a domain you have verified, so one tenant can never sign in as a person from another company.
Last modified on November 6, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hyperstack API Docs","colors":{"primary":"#485BFF","light":"#7B8AFF","dark":"#2D3FCC"},"logo":{"light":"https://mintcdn.com/hyperstack/qY85LaGwLRblCCD2/logo/hyperstack-logo-light.png?fit=max\u0026auto=format\u0026n=qY85LaGwLRblCCD2\u0026q=85\u0026s=59568ee35c09a2e81c4b22550826610e","dark":"https://mintcdn.com/hyperstack/qY85LaGwLRblCCD2/logo/hyperstack-logo-dark.png?fit=max\u0026auto=format\u0026n=qY85LaGwLRblCCD2\u0026q=85\u0026s=3c118a7c08ace7601a8b53de36b7e94b"},"favicon":"https://mintcdn.com/hyperstack/qY85LaGwLRblCCD2/logo.png?fit=max\u0026auto=format\u0026n=qY85LaGwLRblCCD2\u0026q=85\u0026s=c2bd45a10eb2f44438ff621275f6cf06","appearance":{"default":"system"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://thehyperstack.com/","label":"Home"},{"href":"https://share-eu1.hsforms.com/1LNoICRqDRv6esm2iTHkOUwf0g2h","label":"Raise a Ticket"}],"primary":{"type":"button","label":"Studio","href":"https://studio.thehyperstack.com/sign-in"}},"footer":{"socials":{"x":"https://twitter.com/thehyperstack","instagram":"https://instagram.com/thehyperstack","linkedin":"https://www.linkedin.com/company/thehyperstack"}},"seo":{"indexing":"all"},"errors":{"404":{"redirect":false,"title":"Page Not Found","description":"Looks like this page doesn't exist or may have been moved. Try heading back to the [home page](/) or use the search to find what you need."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hyperstack","hasAudioNarration":false,"actualSubdomain":"hyperstack","customDomains":["thehyperstack.com"],"gitSource":{"type":"github","owner":"hyperstack","repo":"product-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec807d8029e5fb8e3e6691","collectionId":"9d6913a2-e30a-430f-a62b-1853bf8b2805","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec807d8029e5fb8e3e6691"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6aed9879ea45b84f9ca72f6e","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Guides \u0026 Tutorials","count":50},{"language":"default","tag":"Integrations","count":24},{"language":"default","tag":"APIs","count":23},{"language":"default","tag":"Advanced Setup","count":16},{"language":"default","tag":"LMS","count":9},{"language":"default","tag":"Miscellaneous","count":9},{"language":"default","tag":"Credentials","count":8},{"language":"default","tag":"Forms","count":6},{"language":"default","tag":"Credential Setup","count":6},{"language":"default","tag":"Branding","count":6}]},"assistantConfig":{},"basePath":"/docs","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"tutorials/single-sign-on/microsoft-entra","slug":"/tutorials/single-sign-on/microsoft-entra","pageMetadata":{"title":"Microsoft Entra ID","description":"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.","icon":"microsoft","href":"/tutorials/single-sign-on/microsoft-entra"},"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: \"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\"\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,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,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(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide connects Microsoft Entra ID (formerly Azure Active Directory) to your Hyperstack organization. You need an administrator in Hyperstack and a person who can add enterprise applications in Entra, such as a Cloud Application Administrator.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Single sign-on is on the Enterprise plan. Read the `,_jsx(_components.a,{href:`/tutorials/single-sign-on`,children:`overview`}),` first to see who can sign in.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`saml-or-oidc`,children:`SAML or OIDC?`}),`\n`,_jsxs(_components.p,{children:[`We recommend `,_jsx(_components.strong,{children:`SAML`}),`. With SAML, the Microsoft My Apps tile opens Hyperstack, and a new Entra certificate reaches us by itself from the metadata URL. OIDC uses a client secret. Entra secrets end after a time you choose, and SSO sign-in stops when the secret ends.`]}),`\n`,_jsx(Heading,{level:`2`,id:`start-in-hyperstack`,children:`Start in Hyperstack`}),`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),` and click `,_jsx(_components.strong,{children:`Microsoft Entra`}),`. Then choose `,_jsx(_components.strong,{children:`SAML (recommended)`}),` or `,_jsx(_components.strong,{children:`OIDC`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`saml-set-up`,children:`SAML set-up`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create the app in Entra`,children:_jsxs(_components.p,{children:[`In the Microsoft Entra admin center, open `,_jsx(_components.strong,{children:`Enterprise applications → New application → Create your own application`}),`. Name it `,_jsx(_components.strong,{children:`Hyperstack`}),`, pick `,_jsx(_components.strong,{children:`Integrate any other application you don’t find in the gallery (Non-gallery)`}),` and click `,_jsx(_components.strong,{children:`Create`}),`.`]})}),_jsx(Step,{title:`Open the SAML settings`,children:_jsxs(_components.p,{children:[`In the app, open `,_jsx(_components.strong,{children:`Single sign-on`}),` and pick `,_jsx(_components.strong,{children:`SAML`}),`. Then click `,_jsx(_components.strong,{children:`Edit`}),` in `,_jsx(_components.strong,{children:`Basic SAML Configuration`}),`.`]})}),_jsxs(Step,{title:`Copy our values into Entra`,children:[_jsxs(_components.p,{children:[`Step 2 of the Hyperstack page, `,_jsx(_components.strong,{children:`Add Hyperstack to Microsoft Entra`}),`, shows each value with a copy button and Entra’s own field name:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Entra field`}),_jsx(_components.th,{children:`Value from Hyperstack`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Identifier (Entity ID)`})}),_jsxs(_components.td,{children:[`Copy `,_jsx(_components.strong,{children:`Identifier (Entity ID)`}),`. Click `,_jsx(_components.strong,{children:`Add identifier`}),` if the list is empty.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reply URL (Assertion Consumer Service URL)`})}),_jsxs(_components.td,{children:[`Copy `,_jsx(_components.strong,{children:`Reply URL (Assertion Consumer Service URL)`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Sign on URL (Optional)`})}),_jsxs(_components.td,{children:[`Copy `,_jsx(_components.strong,{children:`Sign on URL (Optional)`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Relay State (Optional)`})}),_jsx(_components.td,{children:`Leave it empty.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Logout Url (Optional)`})}),_jsx(_components.td,{children:`Leave it empty.`})]})]})]}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=011e74e589e22bff33c84fc664262361`,alt:`Step 2 in Hyperstack with the Identifier, Reply URL and Sign on URL for Entra`,\"data-og-width\":`1296`,width:`1296`,\"data-og-height\":`1560`,height:`1560`,\"data-path\":`images/sso-entra-values.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=280\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=2fc94db6baa5800263cd44adf8248ef2 280w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=560\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=54682e603237852663bc64d3384a3693 560w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=840\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=736db95d564d7137860eb6d61b504683 840w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=730703fd4b8c562d55f0b445e2fd2bf7 1100w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=f19adac641b8605eb252878398db12b4 1650w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-values.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=a253d53cf2b8b546229d412a50061128 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can also click `,_jsx(_components.strong,{children:`Download our metadata (XML)`}),` in Hyperstack, then `,_jsx(_components.strong,{children:`Upload metadata file`}),` at the top of the Entra SAML page. Entra then fills these fields for you.`]})})]}),_jsxs(Step,{title:`Leave the claims as they are`,children:[_jsxs(_components.p,{children:[`Entra already sends the email, given name and surname claims in `,_jsx(_components.strong,{children:`Attributes \u0026 Claims`}),`. Leave them as they are.`]}),_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`emailaddress`}),` claim comes from the person’s `,_jsx(_components.strong,{children:`Email`}),` field in Entra (`,_jsx(_components.code,{children:`user.mail`}),`). If your people have no `,_jsx(_components.strong,{children:`Email`}),` field, but their user principal name is their work email, change the `,_jsx(_components.strong,{children:`emailaddress`}),` claim to `,_jsx(_components.code,{children:`user.userprincipalname`}),`.`]})]}),_jsxs(Step,{title:`Assign people to the app`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Users and groups`}),` in the app and click `,_jsx(_components.strong,{children:`Add user/group`}),`. Add yourself and your team, or a group of them.`]}),_jsxs(_components.p,{children:[`Assigned people still need to be on your Hyperstack team, or have an invitation. See `,_jsx(_components.a,{href:`/tutorials/single-sign-on#who-can-sign-in-with-sso`,children:`Who can sign in with SSO`}),`.`]})]}),_jsxs(Step,{title:`Copy the App Federation Metadata Url into Hyperstack`,children:[_jsxs(_components.p,{children:[`On the Entra `,_jsx(_components.strong,{children:`Single sign-on`}),` page, find `,_jsx(_components.strong,{children:`SAML Certificates`}),` and copy the `,_jsx(_components.strong,{children:`App Federation Metadata Url`}),`.`]}),_jsxs(_components.p,{children:[`In Hyperstack, step 3 `,_jsx(_components.strong,{children:`Connect Microsoft Entra`}),`, paste it in `,_jsx(_components.strong,{children:`Metadata URL`}),` and click `,_jsx(_components.strong,{children:`Save connection`}),`. You see `,_jsx(_components.strong,{children:`Connected to Microsoft Entra`}),` with the issuer and the date the certificate ends.`]}),_jsxs(_components.p,{children:[`Can’t use the metadata URL? Click `,_jsx(_components.strong,{children:`Enter the details by hand instead`}),`. Fill in `,_jsx(_components.strong,{children:`Sign-in URL (IdP SSO URL)`}),` with Entra’s `,_jsx(_components.strong,{children:`Login URL`}),`, `,_jsx(_components.strong,{children:`Issuer (IdP entity ID)`}),` with Entra’s `,_jsx(_components.strong,{children:`Microsoft Entra Identifier`}),`, and upload the `,_jsx(_components.strong,{children:`Certificate (Base64)`}),` file in `,_jsx(_components.strong,{children:`Signing certificate`}),`. You must then paste each new certificate yourself.`]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`the-entra-certificate`,children:`The Entra certificate`}),`\n`,_jsxs(_components.p,{children:[`An Entra SAML certificate lasts 3 years. Entra emails the address in `,_jsx(_components.strong,{children:`Notification Email`}),` before it ends. Hyperstack also shows a notice on `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),` from 30 days before the end.`]}),`\n`,_jsxs(_components.p,{children:[`To change the certificate, make a new one in Entra and make it `,_jsx(_components.strong,{children:`Active`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`With the metadata URL, Hyperstack reads it once a day and adds the new certificate next to the old one. A new certificate works within 24 hours after Entra publishes it. After Entra makes the new certificate `,_jsx(_components.strong,{children:`Active`}),`, click `,_jsx(_components.strong,{children:`Refresh certificates`}),` on `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),` to add it at once. SSO stays on. Hyperstack keeps up to 3 certificates, so old and new both work until the old one ends.`]}),`\n`,_jsxs(_components.li,{children:[`Without it, click `,_jsx(_components.strong,{children:`Update certificate`}),` on the notice, or `,_jsx(_components.strong,{children:`Edit connection`}),`, and add the new certificate. This turns SSO off until a new test passes. See `,_jsx(_components.a,{href:`/tutorials/single-sign-on/domains-and-enforcement#change-the-connection`,children:`Change the connection`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Next: `,_jsx(_components.a,{href:`#finish-in-hyperstack`,children:`verify your domain, test and turn on`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`oidc-set-up`,children:`OIDC set-up`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Register the app in Entra`,children:[_jsxs(_components.p,{children:[`In the Microsoft Entra admin center, open `,_jsx(_components.strong,{children:`App registrations → New registration`}),`. Name it `,_jsx(_components.strong,{children:`Hyperstack`}),`. Under `,_jsx(_components.strong,{children:`Supported account types`}),`, keep `,_jsx(_components.strong,{children:`Accounts in this organizational directory only`}),`.`]}),_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Redirect URI`}),`, pick `,_jsx(_components.strong,{children:`Web`}),` and paste the `,_jsx(_components.strong,{children:`Redirect URI (Web)`}),` from step 2 in Hyperstack. Click `,_jsx(_components.strong,{children:`Register`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=7eb2091083bc6a4d71488877c3928590`,alt:`Step 2 in Hyperstack on the OIDC tab with the Redirect URI (Web)`,\"data-og-width\":`1296`,width:`1296`,\"data-og-height\":`904`,height:`904`,\"data-path\":`images/sso-entra-oidc-values.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=280\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=899fd36c620c37ef97628251a5287b57 280w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=560\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=9a4e73eab0c63ff6819fa35090145350 560w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=840\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=4bf3c261c43d0d57ddec22b59f920105 840w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=1c8ac301866402fdec7bdfc26b31f913 1100w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=ceec06e752c58dabfe83f9d6832ce7e5 1650w, https://mintcdn.com/hyperstack/TA62Nx2wusH3dKmj/images/sso-entra-oidc-values.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=TA62Nx2wusH3dKmj\u0026q=85\u0026s=648f6c415e4b4877a866046968797b0d 2500w`})})]}),_jsxs(Step,{title:`Add a client secret`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Certificates \u0026 secrets → Client secrets → New client secret`}),`. Enter a description, choose when it `,_jsx(_components.strong,{children:`Expires`}),`, and click `,_jsx(_components.strong,{children:`Add`}),`.`]}),_jsxs(_components.p,{children:[`Copy the `,_jsx(_components.strong,{children:`Value`}),` column now, not the `,_jsx(_components.strong,{children:`Secret ID`}),`. Entra shows the value only once.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Note the date in `,_jsx(_components.strong,{children:`Expires`}),`. SSO sign-in stops when the secret ends, and Hyperstack doesn’t remind you of this date. Before it ends, add a new secret in Entra, then click `,_jsx(_components.strong,{children:`Edit connection`}),` and `,_jsx(_components.strong,{children:`Replace secret`}),` in Hyperstack. A new secret turns SSO off until a new test passes, so plan the change. See `,_jsx(_components.a,{href:`/tutorials/single-sign-on/domains-and-enforcement#change-the-connection`,children:`Change the connection`}),`.`]})})]}),_jsx(Step,{title:`Add the email claim`,children:_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Token configuration → Add optional claim`}),`. Pick `,_jsx(_components.strong,{children:`ID`}),`, tick `,_jsx(_components.strong,{children:`email`}),` and click `,_jsx(_components.strong,{children:`Add`}),`. If Entra asks, tick `,_jsx(_components.strong,{children:`Turn on the Microsoft Graph email permission`}),`.`]})}),_jsxs(Step,{title:`Copy the client values into Hyperstack`,children:[_jsxs(_components.p,{children:[`On the app’s `,_jsx(_components.strong,{children:`Overview`}),`, copy the `,_jsx(_components.strong,{children:`Application (client) ID`}),` and the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),`.`]}),_jsxs(_components.p,{children:[`In Hyperstack, step 3 `,_jsx(_components.strong,{children:`Connect Microsoft Entra`}),`, fill in:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Issuer URL`}),`: `,_jsx(_components.code,{children:`https://login.microsoftonline.com/\u003ctenant ID>/v2.0`}),`. Put your `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),` in place of `,_jsx(_components.code,{children:`\u003ctenant ID>`}),`. Hyperstack doesn’t accept `,_jsx(_components.code,{children:`common`}),` or `,_jsx(_components.code,{children:`organizations`}),` here.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Client ID`}),`: the `,_jsx(_components.strong,{children:`Application (client) ID`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Client secret`}),`: the `,_jsx(_components.strong,{children:`Value`}),` you copied.`]}),`\n`]}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save connection`}),`. Hyperstack never shows the secret again.`]})]}),_jsx(Step,{title:`Assign people to the app`,children:_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Enterprise applications`}),` and find `,_jsx(_components.strong,{children:`Hyperstack`}),`. In `,_jsx(_components.strong,{children:`Properties`}),`, set `,_jsx(_components.strong,{children:`Assignment required?`}),` to `,_jsx(_components.strong,{children:`Yes`}),` and save. Then open `,_jsx(_components.strong,{children:`Users and groups`}),` and add yourself and your team.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`finish-in-hyperstack`,children:`Finish in Hyperstack`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Verify your email domain`,children:_jsxs(_components.p,{children:[`Add your domain, such as `,_jsx(_components.code,{children:`acme.com`}),`, and add the TXT record that Hyperstack shows to your DNS. See `,_jsx(_components.a,{href:`/tutorials/single-sign-on/domains-and-enforcement#verify-a-domain`,children:`Verify a domain`}),`.`]})}),_jsxs(Step,{title:`Click Test sign-in`,children:[_jsx(_components.p,{children:`A new tab opens Microsoft’s sign-in page. Sign in there. The test doesn’t change your account or sign you in.`}),_jsxs(_components.p,{children:[`When the test passes, you see `,_jsx(_components.strong,{children:`Test passed`}),` with the email, the name and the Microsoft Entra ID that Entra sent. If it fails, the page says what to change. See `,_jsx(_components.a,{href:`/tutorials/single-sign-on/domains-and-enforcement#test-sign-in-results`,children:`Test sign-in results`}),`.`]})]}),_jsx(Step,{title:`Click Turn on SSO`,children:_jsxs(_components.p,{children:[`You see `,_jsx(_components.strong,{children:`SSO is on. Your team can sign in with Microsoft Entra.`}),` Passwords keep working until you `,_jsx(_components.a,{href:`/tutorials/single-sign-on/domains-and-enforcement#enforce-sso`,children:`enforce SSO`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`questions`,children:`Questions`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Can guests (Entra B2B users) sign in?`,id:`can-guests-entra-b2b-users-sign-in`,children:_jsx(_components.p,{children:`Only when their email is on one of your verified domains. A guest with an email on another company’s domain can’t sign in with your SSO.`})}),_jsx(Accordion,{title:`The test says no email came back`,id:`the-test-says-no-email-came-back`,children:_jsxs(_components.p,{children:[`For SAML, check that the `,_jsx(_components.strong,{children:`emailaddress`}),` claim is in `,_jsx(_components.strong,{children:`Attributes \u0026 Claims`}),`, and that the person has an `,_jsx(_components.strong,{children:`Email`}),` in Entra. For OIDC, add the optional claim `,_jsx(_components.strong,{children:`email`}),` to the ID token.`]})}),_jsx(Accordion,{title:`The test says Microsoft Entra didn't accept the client ID or secret`,id:`the-test-says-microsoft-entra-didnt-accept-the-client-id-or-secret`,children:_jsxs(_components.p,{children:[`Check that you copied the secret’s `,_jsx(_components.strong,{children:`Value`}),`, not its `,_jsx(_components.strong,{children:`Secret ID`}),`, and that the secret hasn’t expired.`]})}),_jsx(Accordion,{title:`Why does Hyperstack check the email domain?`,id:`why-does-hyperstack-check-the-email-domain`,children:_jsx(_components.p,{children:`Entra lets a tenant administrator type any email for a user. Hyperstack trusts an email only on a domain you have verified, so one tenant can never sign in as a person from another company.`})})]})]})}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":"Microsoft Entra ID","description":"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.","icon":"microsoft","href":"/tutorials/single-sign-on/microsoft-entra"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"SAML or OIDC?","slug":"saml-or-oidc","depth":2,"children":[]},{"title":"Start in Hyperstack","slug":"start-in-hyperstack","depth":2,"children":[]},{"title":"SAML set-up","slug":"saml-set-up","depth":2,"children":[{"title":"The Entra certificate","slug":"the-entra-certificate","depth":3,"children":[]}]},{"title":"OIDC set-up","slug":"oidc-set-up","depth":2,"children":[]},{"title":"Finish in Hyperstack","slug":"finish-in-hyperstack","depth":2,"children":[]},{"title":"Questions","slug":"questions","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hyperstack","siteName":"Hyperstack API Docs","title":"Microsoft Entra ID - Hyperstack API Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T09:06:15.927Z","gitLastModified":"2026-11-06T09:05:47.000Z","originalFileLocation":"tutorials/single-sign-on/microsoft-entra.mdx"},"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=\"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hyperstack API Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_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=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Microsoft Entra ID - Hyperstack API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hyperstack API Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hyperstack.mintlify.site/docs/_mintlify/api/og/v2?division=Single+Sign-On\u0026amp;title=Microsoft+Entra+ID\u0026amp;description=Connect+Microsoft+Entra+ID+%28Azure+AD%29+to+Hyperstack+with+SAML+or+OIDC%2C+so+your+team+signs+in+with+their+Microsoft+work+account.\u0026amp;theme=3a49a943a6a5cec7cc085acd\u0026amp;signature=3db50acb633911f432cc27a71a7c6945a987637d3d5c76440264662e958c6f51\">\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=\"Microsoft Entra ID - Hyperstack API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hyperstack.mintlify.site/docs/_mintlify/api/og/v2?division=Single+Sign-On\u0026amp;title=Microsoft+Entra+ID\u0026amp;description=Connect+Microsoft+Entra+ID+%28Azure+AD%29+to+Hyperstack+with+SAML+or+OIDC%2C+so+your+team+signs+in+with+their+Microsoft+work+account.\u0026amp;theme=3a49a943a6a5cec7cc085acd\u0026amp;signature=3db50acb633911f432cc27a71a7c6945a987637d3d5c76440264662e958c6f51\">\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=\"/docs/mintlify-assets/_mintlify/favicons/hyperstack/Tr3f4HIN7vRm5LVr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hyperstack API Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#485BFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/tutorials/single-sign-on/microsoft-entra.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://thehyperstack.com/#organization\",\"name\":\"Hyperstack API Docs\",\"url\":\"https://thehyperstack.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hyperstack/qY85LaGwLRblCCD2/logo/hyperstack-logo-light.png?fit=max\u0026auto=format\u0026n=qY85LaGwLRblCCD2\u0026q=85\u0026s=59568ee35c09a2e81c4b22550826610e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://thehyperstack.com/docs#website\",\"name\":\"Hyperstack API Docs\",\"url\":\"https://thehyperstack.com/docs\",\"publisher\":{\"@id\":\"https://thehyperstack.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra#webpage\",\"url\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra\",\"name\":\"Microsoft Entra ID\",\"description\":\"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\",\"dateModified\":\"2026-11-06T09:05:47.000Z\",\"isPartOf\":{\"@id\":\"https://thehyperstack.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Single Sign-On\",\"item\":\"https://thehyperstack.com/docs/tutorials/single-sign-on\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microsoft Entra ID\",\"item\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra#article\",\"headline\":\"Microsoft Entra ID\",\"name\":\"Microsoft Entra ID\",\"description\":\"Connect Microsoft Entra ID (Azure AD) to Hyperstack with SAML or OIDC, so your team signs in with their Microsoft work account.\",\"url\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra\",\"mainEntityOfPage\":{\"@id\":\"https://thehyperstack.com/docs/tutorials/single-sign-on/microsoft-entra#webpage\"},\"dateModified\":\"2026-11-06T09:05:47.000Z\",\"publisher\":{\"@id\":\"https://thehyperstack.com/#organization\"},\"isPartOf\":{\"@id\":\"https://thehyperstack.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hyperstack API Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hyperstack API Docs","nav":{"global":null,"tabs":[{"tab":"Guides \u0026 Tutorials","groups":[{"group":"Welcome","pages":[{"title":"Introduction","icon":"home","href":""},{"title":"Platform Tutorial","icon":"graduation-cap","href":"/tutorials/introduction"}]},{"group":"Getting Started","pages":[{"title":"Getting Started","sidebarTitle":"Introduction","icon":"rocket","href":"/tutorials/getting-started"},{"title":"Create Your Account","icon":"user-plus","href":"/tutorials/getting-started/create-issuer-account"},{"title":"Studio Tour","icon":"desktop","href":"/tutorials/getting-started/hyperstack-dashboard-walkthrough"},{"title":"Organization Settings","icon":"gear","href":"/tutorials/getting-started/basic-account-setup"}]},{"group":"Credential Setup","pages":[{"title":"Credential Setup","sidebarTitle":"Introduction","icon":"id-card","href":"/tutorials/credential-setup"},{"title":"Design a Certificate or Badge","icon":"pen-fancy","href":"/tutorials/credential-setup/designing-certificate"},{"title":"Create a Credential Group","icon":"layer-group","href":"/tutorials/credential-setup/creating-credential-group"},{"title":"Issue Credentials","icon":"paper-plane","href":"/tutorials/credential-setup/issuing-credential"},{"title":"Manage Credentials","icon":"list-check","href":"/tutorials/credential-setup/managing-credentials"},{"title":"Change Requests","icon":"spell-check","href":"/tutorials/credential-setup/change-requests"}]},{"group":"Branding","pages":[{"title":"Customization and Branding","sidebarTitle":"Introduction","icon":"palette","href":"/tutorials/customization-and-branding"},{"title":"Email Templates","icon":"envelope","href":"/tutorials/customization-and-branding/email-customization"},{"title":"Branding and Custom Domain","icon":"paintbrush","href":"/tutorials/customization-and-branding/branding-and-whitelabeling"},{"title":"Brand Fonts","icon":"font","href":"/tutorials/customization-and-branding/brand-fonts"},{"title":"Showcase Page","icon":"store","href":"/tutorials/customization-and-branding/showcase-page-setup"},{"title":"Verification Page","icon":"circle-check","href":"/tutorials/customization-and-branding/verification-page"}]},{"group":"Advanced Setup","pages":[{"title":"Advanced Setup","sidebarTitle":"Introduction","icon":"gear","href":"/tutorials/advanced-setup"},{"title":"Analytics","icon":"chart-line","href":"/tutorials/advanced-setup/analytics-and-insights"},{"title":"Team Management","icon":"users","href":"/tutorials/advanced-setup/team-management"},{"title":"Custom Attributes","icon":"tags","href":"/tutorials/advanced-setup/custom-attributes"},{"title":"Recipients","icon":"address-card","href":"/tutorials/advanced-setup/recipients"},{"title":"Student Reviews","icon":"star","href":"/tutorials/advanced-setup/student-reviews"},{"title":"Pathways","icon":"route","href":"/tutorials/advanced-setup/pathways"},{"title":"Promotions","icon":"bullhorn","href":"/tutorials/advanced-setup/promotions"},{"title":"Transcripts","icon":"file-lines","href":"/tutorials/advanced-setup/transcripts"},{"title":"Blockchain Security","icon":"link","href":"/tutorials/advanced-setup/blockchain-security"},{"title":"Departments","icon":"building","href":"/tutorials/advanced-setup/departments"},{"title":"Earners Directory","icon":"address-book","href":"/tutorials/advanced-setup/earners-directory"},{"title":"Audit Logs","icon":"scroll","href":"/tutorials/advanced-setup/audit-logs"},{"title":"API Keys and Webhooks","icon":"code","href":"/tutorials/advanced-setup/developer-settings"},{"title":"Billing and Credits","icon":"credit-card","href":"/tutorials/advanced-setup/billing-and-credits"},{"title":"Account Security","icon":"shield-halved","href":"/tutorials/advanced-setup/account-security"}]},{"group":"Single Sign-On","pages":[{"title":"Single Sign-On (SSO)","sidebarTitle":"Overview","icon":"key","href":"/tutorials/single-sign-on"},{"title":"Okta","description":"Connect Okta to Hyperstack with SAML or OIDC, so your team signs in with their Okta account.","icon":"circle-dot","href":"/tutorials/single-sign-on/okta"},{"title":"Microsoft Entra ID","icon":"microsoft","href":"/tutorials/single-sign-on/microsoft-entra"},{"title":"Other Identity Providers","description":"Connect Google Workspace, OneLogin, JumpCloud, Ping or any SAML 2.0 or OpenID Connect provider.","icon":"id-card","href":"/tutorials/single-sign-on/other-identity-providers"},{"title":"Domains and Enforcement","icon":"globe","href":"/tutorials/single-sign-on/domains-and-enforcement"}]},{"group":"For Recipients","pages":[{"title":"Your Credential Wallet","icon":"wallet","href":"/tutorials/recipients/wallet"}]},{"group":"Miscellaneous","pages":[{"title":"Miscellaneous","sidebarTitle":"Introduction","icon":"ellipsis","href":"/tutorials/miscellaneous"},{"title":"Issue Without an Email","icon":"envelope-open","href":"/tutorials/miscellaneous/email-less-credential"},{"title":"Archive Groups and Designs","icon":"box-archive","href":"/tutorials/miscellaneous/archive-items"},{"title":"Resend the Credential Email","icon":"paper-plane","href":"/tutorials/miscellaneous/resend-invitation"},{"title":"Duplicate a Credential Group","icon":"copy","href":"/tutorials/miscellaneous/credential-group-duplication"},{"title":"Duplicate a Design","icon":"clone","href":"/tutorials/miscellaneous/certificate-design-duplication"},{"title":"Suspend or Revoke a Credential","icon":"ban","href":"/tutorials/miscellaneous/credential-suspension"}]},{"group":"Miscellaneous","pages":[{"title":"Miscellaneous","sidebarTitle":"Introduction","icon":"ellipsis","href":"/miscellaneous"},{"title":"Branding Guidelines","icon":"code","href":"/miscellaneous/branding-guidelines"}]},{"group":"FAQs","icon":"circle-question","pages":[{"title":"FAQs","href":"/faqs"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"APIs","pages":[{"title":"APIs","href":"/api-guide/overview"}]}]},"basePath":"","title":"Microsoft Entra ID - Hyperstack API Docs","buildId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","deploymentId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-E5itAVSN.js","DynamicMarkdown-DORtg_Te.js","zoom-image-lightbox-OBZHPeVn.js","lightbox-handle-r17bVUz3.js"]}