Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.
Microsoft Entra ID, Microsoft Azure, and Okta let an agent answer questions about your identity directory and your cloud control plane through the same governed path as every other application: people authorize the connection themselves, the gateway injects the credential per call, policy applies before each action, and activity is recorded.They differ from each other in one respect - whose OAuth application the connection runs on.
Application
OAuth application used
What you need to do
Microsoft Entra ID
Oleria’s - an application used for this connection and nothing else
Enable it, then have an administrator approve organization-wide access.
Microsoft Azure
Oleria’s - again, its own application
Enable it, and assign the Azure roles that decide what each person can see.
Okta
Yours. Okta has no cross-organization application - its sign-in and its API both live on your own acme.okta.com host - so the connection is only possible once an administrator registers one.
Create an app integration in Okta and enter its credentials.
Each Microsoft connection runs on a separate Oleria application - Entra ID, Azure and SharePoint do not share one. That is deliberate, and it changes what you are agreeing to: Microsoft grants consent per application, never per connector. Were they to share one, approving Entra ID’s directory access would also approve SharePoint’s access to your files and sites, and revoking either would revoke both. Because they are separate, the consent screen you see when you connect Entra ID asks for directory access and nothing else.If you would rather Microsoft ran on an application your organization owns and can revoke, you can supply one - see Bring your own OAuth app.
Only Oleria Administrators can register an application’s credentials. View role permissions.
Each connection is a governed path to the provider’s own API, so an agent can answer questions across the whole read surface the permissions allow.
Application
REST API
MCP
What agents can reach
Microsoft Entra ID
Microsoft Graph
No
Users, groups, application assignments, and directory sign-in and audit data.
Microsoft Azure
Azure Resource Manager
No
Subscriptions, resource groups, resources, and role assignments.
Okta
Okta’s management API
No
Users, groups, applications, and the system log for your Okta organization.
None of these three is reached through an MCP server. Azure and Okta each ship an official one, but it runs as a local process on your own machine rather than a hosted endpoint, so there is nothing for the gateway to reach on your behalf. Microsoft does host one for Entra ID, but it is a separate API permission and consent that Oleria’s application does not carry. All three call the vendor’s REST API, and nothing is lost in what an agent can ask.See Application permissions for the mechanism behind every application the gateway brokers.Questions like “which accounts in the directory have no MFA method registered”, “who holds Owner on this subscription”, or “which Okta users haven’t signed in for 90 days” are answered from live data rather than an export.Two limits are worth knowing before you connect:Entra ID and Okta are connected read-only. The gateway requests read permissions for the directory. Write actions - creating a user, resetting a password - are not part of these connections, and a request to perform one is refused by the provider.In Azure, your own role assignments still decide everything. The OAuth permission lets the gateway call Azure Resource Manager as you; it grants no access by itself. A person with no Azure role sees nothing, no matter what the gateway’s policy says. Grant Reader on the subscriptions an agent should be able to answer questions about.The rest of this page is one self-contained section per application. Follow the one you are connecting; you do not need to read the others.
Entra ID runs on Oleria’s own application, so there is nothing to register. One thing is still yours to do, and skipping it produces a connection nobody can complete.Callback URL - already configured on Oleria’s application. You only need it if you register your own:
In the admin portal, go to Governance -> Oleria AI Agent Gateway, and on the OAuth Access tab select the Microsoft Entra ID row. In Registry, turn the application on.
2
Approve organization-wide access
Entra ID asks for at least one permission that an ordinary user cannot approve for themselves. Until an administrator approves it, everyone who tries to connect is stopped at Microsoft’s own screen and connects nothing - not a connection missing one permission - and because they never return to Oleria, the failure does not show up here.On the same panel, use Approve for your organization under Organization-wide access.Two different administrator rights are involved, and you need both:
A Global Administrator or Privileged Role Administrator in your directory. Microsoft enforces this on its own consent screen, whoever starts the flow.
You can approve again at any time, and sometimes you will need to. Approval covers the permissions the application asked for on the day it was given, so it can go out of date without anyone revoking anything - when Oleria adds a permission to a connector, or when you change your own registration. The panel shows when it was last approved and who by, which is a record of what happened rather than a guarantee that it still holds: an administrator can revoke consent in Microsoft, or grant it directly there, and neither is visible to Oleria.
3
Set the risky-operation decisions
Entra ID has a roster of risky operations, all of them denied until an administrator decides otherwise. See Application permissions for what each one covers, and Set the application’s policy for how to set them.
4
Verify it worked
Connect Entra ID as a user, from the Governance App under AI Agent Gateway. Then, in the Microsoft Entra admin center, open Enterprise applications, find the application the connection runs on, and review its sign-in activity - that is the evidence traffic is really flowing through it.
Optional, and only if you would rather Entra ID ran on an application your organization owns and can revoke.
1
Register the application
In the Microsoft Entra admin center, go to Identity -> Applications -> App registrations and select New registration.Give it a name your administrators will recognize, such as Oleria AI Agent Gateway - Entra ID. Under Redirect URI, choose Web and enter the Entra ID callback URL above.
2
Create a client secret
Open Certificates & secrets -> New client secret. Copy the value immediately - Entra shows it once.Note the expiry you choose. When the secret expires, connections stop refreshing and people are treated as not connected until you supply a new one.
3
Add the API permissions
Open API permissions -> Add a permission -> Microsoft Graph -> Delegated permissions, and add:
Permission
Why it’s needed
User.Read
Identify the account that connected.
Directory.Read.All
Read users, groups, and application assignments.
Then select Grant admin consent. Directory.Read.All cannot be consented to by an individual - without this step every person who tries to connect is stopped by Microsoft’s own consent screen, not by Oleria.
4
Collect the values Oleria needs
From the registration’s Overview page, copy the Application (client) ID and the Directory (tenant) ID. You already have the client secret.Supply the Directory (tenant) ID whenever your registration is single-tenant, which is the default for a new one. Without it, Microsoft rejects the sign-in with AADSTS50194.
5
Enter the credentials in Oleria
On the Microsoft Entra ID row under OAuth Access, turn on Bring your own credentials and enter the Application (client) ID, the Client Secret, and the Directory (tenant) ID.The Directory (tenant) ID is not optional bookkeeping - it completes the address the gateway signs people in at. The gateway refuses to start a sign-in while it is missing, rather than sending people to an address that cannot work.The client secret is encrypted with your tenant’s own key and is never displayed again after saving. Select Save.
Connecting Azure as well? Register a second application for it rather than adding Azure to this one - see the Azure section below for why.
Azure runs on Oleria’s own application, so there is nothing to register. One thing is still yours to do, and skipping it produces a connection that works and answers nothing.Callback URL - already configured on Oleria’s application. You only need it if you register your own:
In the admin portal, go to Governance -> Oleria AI Agent Gateway, and on the OAuth Access tab select the Microsoft Azure row. In Registry, turn the application on.
2
Grant Azure roles to the people who will use it
In each subscription an agent should cover, open Access control (IAM) and assign Reader (or a narrower custom role) to those people.The OAuth permission lets the gateway call Azure as you; it grants access to nothing by itself. Skipping this produces a connection that works and answers nothing: Azure returns an empty list of subscriptions, with no error to read.
3
Set the risky-operation decisions
Azure has a roster of risky operations, all of them denied until an administrator decides otherwise. See Application permissions for what each one covers, and Set the application’s policy for how to set them.
4
Verify it worked
Connect Azure as a user, from the Governance App under AI Agent Gateway, and ask an agent which subscriptions it can see. An empty answer from someone who should see subscriptions means the role assignment in the previous step is missing, not the connection.
Optional, and only if you would rather Azure ran on an application your organization owns and can revoke.
1
Register a separate application
Register it the same way as the Entra ID one - App registrations -> New registration, a recognizable name such as Oleria AI Agent Gateway - Azure, Redirect URI of type Web set to the Azure callback URL above - then create a client secret under Certificates & secrets.You can instead add Azure to your Entra ID registration, by adding the Azure callback as a second Web redirect URI. It works, and it is the trade most organizations regret. Consent in Microsoft is granted per application: one registration serving both means whoever approves Entra ID’s directory access approves cloud control-plane access at the same moment, on the same screen, and revoking one revokes the other. A second registration costs one more secret to rotate and keeps the two decisions separate - which is why Oleria’s own applications are split this way.
2
Add the API permission
Open API permissions -> Add a permission -> Azure Service Management -> Delegated permissions, and add user_impersonation.
3
Collect the values Oleria needs
From the registration’s Overview page, copy the Application (client) ID and the Directory (tenant) ID. You already have the client secret.Supply the Directory (tenant) ID whenever your registration is single-tenant, which is the default for a new one. Without it, Microsoft rejects the sign-in with AADSTS50194.
4
Enter the credentials in Oleria
On the Microsoft Azure row under OAuth Access, turn on Bring your own credentials and enter the Application (client) ID, the Client Secret, and the Directory (tenant) ID. Select Save.
Okta has no cross-organization application - its sign-in and its API both live on your own acme.okta.com host - so there is always an app integration for you to create. Everything in this section is required.Callback URL - enter this as the sign-in redirect URI on the integration you create:
In the Okta Admin Console, go to Applications -> Applications -> Create App Integration. Choose OIDC - OpenID Connect and Web Application.Under Sign-in redirect URIs, enter the Okta callback URL above. Under Grant type, keep Authorization Code and also select Refresh Token - without it, people have to sign in again every hour.
2
Assign the people who will use it
On the integration’s Assignments tab, assign the people or groups who will connect Okta - the same way you would for any other Okta application.Okta will not sign an unassigned person in, so skipping this stops each of them at Okta rather than at Oleria, with nothing on the Oleria side to show why.
3
Grant the Okta API scopes
This is the step that is easy to miss, because nothing about creating the integration hints at it.Open the integration’s Okta API Scopes tab and grant these scopes:
Scope
Why it’s needed
okta.users.read
Read user accounts and their status.
okta.groups.read
Read groups and their membership.
okta.apps.read
Read application assignments.
okta.logs.read
Read the system log, for sign-in and admin activity questions.
These are your organization’s own Okta management scopes, granted to the integration on this tab - not scopes you add to a custom authorization server under Security -> API. Okta does not grant them because the gateway asks for them. An integration that skips this connects successfully and then refuses every call.
4
Collect the values Oleria needs
From the integration’s General tab, copy the Client ID and the Client Secret. You also need your organization’s Okta URL, such as https://acme.okta.com - the host you sign in to.
5
Enable the application and enter the credentials
In the admin portal, go to Governance -> Oleria AI Agent Gateway, and on the OAuth Access tab select the Okta row. In Registry, turn the application on, turn on Bring your own credentials, and fill in Client ID, Client Secret, and Okta Org URL.The org URL is not optional bookkeeping - it completes the address the gateway signs people in at, since Okta authenticates against your organization’s own host. The gateway refuses to start a sign-in while it is missing, rather than sending people to an address that cannot work. It must be https.The client secret is encrypted with your tenant’s own key and is never displayed again after saving.
6
Set the risky-operation decisions
Okta has a roster of risky operations, all of them denied until an administrator decides otherwise. See Application permissions for what each one covers, and Set the application’s policy for how to set them.Then select Save. Every field shown for the application is required - the gateway will not start a sign-in until each is supplied.
7
Verify it worked
Connect Okta as a user, from the Governance App under AI Agent Gateway, and check the consent screen - it should name your own integration.Then confirm it from Okta’s side, which is the evidence that traffic is running through your client: open the app integration and check Reports or the System Log for authorizations against it.
Two changes break existing connections, and neither announces itself:Rotating a client secret you own. Update it in the Registry section as soon as you rotate it in the provider. Until you do, tokens fail to refresh as they expire, and people are gradually treated as not connected. Oleria’s own applications are rotated by Oleria, and need nothing from you.Switching to a different registration. Tokens issued to the old client cannot be refreshed by a new one. Ask anyone already using the application to disconnect and reconnect - it takes a few seconds.If a required field is missing, the gateway stops the sign-in and says so, naming the field to set. That is the intended behavior: a connection is never made against a partially configured application.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Oleria Identity Security","colors":{"primary":"#027864","light":"#027864","dark":"#58D5BA"},"logo":{"light":"https://mintcdn.com/dev-oleria/6TR7wXwCMQAv-eRG/images/OleriaLightMode-1.png?fit=max\u0026auto=format\u0026n=6TR7wXwCMQAv-eRG\u0026q=85\u0026s=82d13b20d2911e74791665a1d455d1c1","dark":"https://mintcdn.com/dev-oleria/6TR7wXwCMQAv-eRG/images/Oleria_Dark_2.png?fit=max\u0026auto=format\u0026n=6TR7wXwCMQAv-eRG\u0026q=85\u0026s=c0e24f7fc4973d5c51c38a982b8b786a"},"favicon":"https://mintcdn.com/dev-oleria/-ta9F4IOoIdAdZV0/images/favicon.png?fit=max\u0026auto=format\u0026n=-ta9F4IOoIdAdZV0\u0026q=85\u0026s=66a6b918997297ee3a8da158aef7b8b2","appearance":{"default":"light"},"background":{"color":{"light":"#ffffff"}},"navbar":{"links":[{"href":"mailto:support@oleria.com","label":"Support"}]},"footer":{"socials":{"website":"https://oleria.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dev-oleria","hasAudioNarration":false,"actualSubdomain":"dev-oleria","customDomains":["docs.oleria.ai"],"gitSource":{"type":"github","owner":"roanokedatasecurity","repo":"oleria-docs","deployBranch":"docs/partner-site","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6aad4a280206d830b0c8e0be","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":91},{"language":"default","tag":"Inventory \u0026 Actions","count":72},{"language":"default","tag":"Product","count":69},{"language":"default","tag":"Integrations","count":38},{"language":"default","tag":"Applications","count":31},{"language":"default","tag":"Governance","count":26},{"language":"default","tag":"Posture","count":21},{"language":"default","tag":"Administration","count":17},{"language":"default","tag":"TrustFusion","count":10},{"language":"default","tag":"Accounts","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"editor-metadata","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"governance/ai-agent-gateway-identity-platforms","slug":"/governance/ai-agent-gateway-identity-platforms","pageMetadata":{"title":"Connect identity and cloud platforms","description":"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.","href":"/governance/ai-agent-gateway-identity-platforms"},"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, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta 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`,em:`em`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Step,Steps,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Microsoft Entra ID, Microsoft Azure, and Okta let an agent answer questions about your identity directory and your cloud control plane through the same governed path as every other application: people authorize the connection themselves, the gateway injects the credential per call, policy applies before each action, and activity is recorded.`}),`\n`,_jsx(_components.p,{children:`They differ from each other in one respect - whose OAuth application the connection runs on.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Application`}),_jsx(_components.th,{style:{textAlign:`left`},children:`OAuth application used`}),_jsx(_components.th,{style:{textAlign:`left`},children:`What you need to do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Microsoft Entra ID`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Oleria’s - an application used for this connection and nothing else`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Enable it, then have an administrator approve organization-wide access.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Microsoft Azure`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Oleria’s - again, its own application`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Enable it, and assign the Azure roles that decide what each person can see.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Okta`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.strong,{children:`Yours.`}),` Okta has no cross-organization application - its sign-in and its API both live on your own `,_jsx(_components.code,{children:`acme.okta.com`}),` host - so the connection is only possible once an administrator registers one.`]}),_jsx(_components.td,{style:{textAlign:`left`},children:`Create an app integration in Okta and enter its credentials.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Each Microsoft connection runs on a `,_jsx(_components.strong,{children:`separate`}),` Oleria application - Entra ID, Azure and SharePoint do not share one. That is deliberate, and it changes what you are agreeing to: Microsoft grants consent per `,_jsx(_components.em,{children:`application`}),`, never per connector. Were they to share one, approving Entra ID’s directory access would also approve SharePoint’s access to your files and sites, and revoking either would revoke both. Because they are separate, the consent screen you see when you connect Entra ID asks for directory access and nothing else.`]}),`\n`,_jsxs(_components.p,{children:[`If you would rather Microsoft ran on an application your organization owns and can revoke, you can supply one - see `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-byo-oauth`,children:`Bring your own OAuth app`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Only Oleria Administrators can register an application’s credentials. `,_jsx(_components.a,{href:`/administration/default-user-roles`,children:`View role permissions`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`what-an-agent-can-do-once-connected`,children:`What an agent can do once connected`}),`\n`,_jsx(_components.p,{children:`Each connection is a governed path to the provider’s own API, so an agent can answer questions across the whole read surface the permissions allow.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Application`}),_jsx(_components.th,{style:{textAlign:`left`},children:`REST API`}),_jsx(_components.th,{style:{textAlign:`left`},children:`MCP`}),_jsx(_components.th,{style:{textAlign:`left`},children:`What agents can reach`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Microsoft Entra ID`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Microsoft Graph`}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Users, groups, application assignments, and directory sign-in and audit data.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Microsoft Azure`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Azure Resource Manager`}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Subscriptions, resource groups, resources, and role assignments.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Okta`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Okta’s management API`}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Users, groups, applications, and the system log for your Okta organization.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`None of these three is reached through an MCP server.`}),` Azure and Okta each ship an official one, but it runs as a local process on your own machine rather than a hosted endpoint, so there is nothing for the gateway to reach on your behalf. Microsoft does host one for Entra ID, but it is a separate API permission and consent that Oleria’s application does not carry. All three call the vendor’s REST API, and nothing is lost in what an agent can ask.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-app-permissions`,children:`Application permissions`}),` for the mechanism behind every application the gateway brokers.`]}),`\n`,_jsx(_components.p,{children:`Questions like “which accounts in the directory have no MFA method registered”, “who holds Owner on this subscription”, or “which Okta users haven’t signed in for 90 days” are answered from live data rather than an export.`}),`\n`,_jsx(_components.p,{children:`Two limits are worth knowing before you connect:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Entra ID and Okta are connected read-only.`}),` The gateway requests read permissions for the directory. Write actions - creating a user, resetting a password - are not part of these connections, and a request to perform one is refused by the provider.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`In Azure, your own role assignments still decide everything.`}),` The OAuth permission lets the gateway call Azure Resource Manager as you; it grants no access by itself. A person with no Azure role sees nothing, no matter what the gateway’s policy says. Grant `,_jsx(_components.strong,{children:`Reader`}),` on the subscriptions an agent should be able to answer questions about.`]}),`\n`,_jsx(_components.p,{children:`The rest of this page is one self-contained section per application. Follow the one you are connecting; you do not need to read the others.`}),`\n`,_jsx(Heading,{level:`2`,id:`microsoft-entra-id`,children:`Microsoft Entra ID`}),`\n`,_jsx(_components.p,{children:`Entra ID runs on Oleria’s own application, so there is nothing to register. One thing is still yours to do, and skipping it produces a connection nobody can complete.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Callback URL`}),` - already configured on Oleria’s application. You only need it if you register your own:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://ai-gateway.prod.oleria.io/connect/apps/entra-id/callback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enable the application`,children:_jsxs(_components.p,{children:[`In the admin portal, go to `,_jsx(_components.strong,{children:`Governance`}),` -> `,_jsx(_components.strong,{children:`Oleria AI Agent Gateway`}),`, and on the `,_jsx(_components.strong,{children:`OAuth Access`}),` tab select the `,_jsx(_components.strong,{children:`Microsoft Entra ID`}),` row. In `,_jsx(_components.strong,{children:`Registry`}),`, turn the application on.`]})}),_jsxs(Step,{title:`Approve organization-wide access`,children:[_jsxs(_components.p,{children:[`Entra ID asks for at least one permission that an ordinary user cannot approve for themselves. Until an administrator approves it, `,_jsx(_components.strong,{children:`everyone`}),` who tries to connect is stopped at Microsoft’s own screen and connects nothing - not a connection missing one permission - and because they never return to Oleria, the failure does not show up here.`]}),_jsxs(_components.p,{children:[`On the same panel, use `,_jsx(_components.strong,{children:`Approve for your organization`}),` under `,_jsx(_components.strong,{children:`Organization-wide access`}),`.`]}),_jsx(_components.p,{children:`Two different administrator rights are involved, and you need both:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Where`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Who`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`In Oleria`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`An Oleria Administrator. `,_jsx(_components.a,{href:`/administration/default-user-roles`,children:`View role permissions`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`At Microsoft`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`A `,_jsx(_components.strong,{children:`Global Administrator`}),` or `,_jsx(_components.strong,{children:`Privileged Role Administrator`}),` in your directory. Microsoft enforces this on its own consent screen, whoever starts the flow.`]})]})]})]}),_jsx(_components.p,{children:`You can approve again at any time, and sometimes you will need to. Approval covers the permissions the application asked for on the day it was given, so it can go out of date without anyone revoking anything - when Oleria adds a permission to a connector, or when you change your own registration. The panel shows when it was last approved and who by, which is a record of what happened rather than a guarantee that it still holds: an administrator can revoke consent in Microsoft, or grant it directly there, and neither is visible to Oleria.`})]}),_jsx(Step,{title:`Set the risky-operation decisions`,children:_jsxs(_components.p,{children:[`Entra ID has a roster of risky operations, all of them denied until an administrator decides otherwise. See `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-app-permissions`,children:`Application permissions`}),` for what each one covers, and `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-admin-setup#set-the-applications-policy`,children:`Set the application’s policy`}),` for how to set them.`]})}),_jsx(Step,{title:`Verify it worked`,children:_jsxs(_components.p,{children:[`Connect Entra ID as a user, from the Governance App under `,_jsx(_components.strong,{children:`AI Agent Gateway`}),`. Then, in the Microsoft Entra admin center, open `,_jsx(_components.strong,{children:`Enterprise applications`}),`, find the application the connection runs on, and review its sign-in activity - that is the evidence traffic is really flowing through it.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`bringing-your-own-application-for-entra-id`,children:`Bringing your own application for Entra ID`}),`\n`,_jsx(_components.p,{children:`Optional, and only if you would rather Entra ID ran on an application your organization owns and can revoke.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Register the application`,children:[_jsxs(_components.p,{children:[`In the Microsoft Entra admin center, go to `,_jsx(_components.strong,{children:`Identity`}),` -> `,_jsx(_components.strong,{children:`Applications`}),` -> `,_jsx(_components.strong,{children:`App registrations`}),` and select `,_jsx(_components.strong,{children:`New registration`}),`.`]}),_jsxs(_components.p,{children:[`Give it a name your administrators will recognize, such as `,_jsx(_components.code,{children:`Oleria AI Agent Gateway - Entra ID`}),`. Under `,_jsx(_components.strong,{children:`Redirect URI`}),`, choose `,_jsx(_components.strong,{children:`Web`}),` and enter the Entra ID callback URL above.`]})]}),_jsxs(Step,{title:`Create a client secret`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Certificates \u0026 secrets`}),` -> `,_jsx(_components.strong,{children:`New client secret`}),`. Copy the value immediately - Entra shows it once.`]}),_jsx(_components.p,{children:`Note the expiry you choose. When the secret expires, connections stop refreshing and people are treated as not connected until you supply a new one.`})]}),_jsxs(Step,{title:`Add the API permissions`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`API permissions`}),` -> `,_jsx(_components.strong,{children:`Add a permission`}),` -> `,_jsx(_components.strong,{children:`Microsoft Graph`}),` -> `,_jsx(_components.strong,{children:`Delegated permissions`}),`, and add:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Permission`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Why it’s needed`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`User.Read`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Identify the account that connected.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`Directory.Read.All`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Read users, groups, and application assignments.`})]})]})]}),_jsxs(_components.p,{children:[`Then select `,_jsx(_components.strong,{children:`Grant admin consent`}),`. `,_jsx(_components.code,{children:`Directory.Read.All`}),` cannot be consented to by an individual - without this step every person who tries to connect is stopped by Microsoft’s own consent screen, not by Oleria.`]})]}),_jsxs(Step,{title:`Collect the values Oleria needs`,children:[_jsxs(_components.p,{children:[`From the registration’s `,_jsx(_components.strong,{children:`Overview`}),` page, copy the `,_jsx(_components.strong,{children:`Application (client) ID`}),` and the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),`. You already have the client secret.`]}),_jsxs(_components.p,{children:[`Supply the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),` whenever your registration is single-tenant, which is the default for a new one. Without it, Microsoft rejects the sign-in with `,_jsx(_components.code,{children:`AADSTS50194`}),`.`]})]}),_jsxs(Step,{title:`Enter the credentials in Oleria`,children:[_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Microsoft Entra ID`}),` row under `,_jsx(_components.strong,{children:`OAuth Access`}),`, turn on `,_jsx(_components.strong,{children:`Bring your own credentials`}),` and enter the `,_jsx(_components.strong,{children:`Application (client) ID`}),`, the `,_jsx(_components.strong,{children:`Client Secret`}),`, and the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),`.`]}),_jsx(_components.p,{children:`The Directory (tenant) ID is not optional bookkeeping - it completes the address the gateway signs people in at. The gateway refuses to start a sign-in while it is missing, rather than sending people to an address that cannot work.`}),_jsxs(_components.p,{children:[`The client secret is encrypted with your tenant’s own key and is never displayed again after saving. Select `,_jsx(_components.strong,{children:`Save`}),`.`]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Connecting Azure as well? Register a `,_jsx(_components.strong,{children:`second`}),` application for it rather than adding Azure to this one - see the Azure section below for why.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`microsoft-azure`,children:`Microsoft Azure`}),`\n`,_jsx(_components.p,{children:`Azure runs on Oleria’s own application, so there is nothing to register. One thing is still yours to do, and skipping it produces a connection that works and answers nothing.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Callback URL`}),` - already configured on Oleria’s application. You only need it if you register your own:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://ai-gateway.prod.oleria.io/connect/apps/azure/callback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enable the application`,children:_jsxs(_components.p,{children:[`In the admin portal, go to `,_jsx(_components.strong,{children:`Governance`}),` -> `,_jsx(_components.strong,{children:`Oleria AI Agent Gateway`}),`, and on the `,_jsx(_components.strong,{children:`OAuth Access`}),` tab select the `,_jsx(_components.strong,{children:`Microsoft Azure`}),` row. In `,_jsx(_components.strong,{children:`Registry`}),`, turn the application on.`]})}),_jsxs(Step,{title:`Grant Azure roles to the people who will use it`,children:[_jsxs(_components.p,{children:[`In each subscription an agent should cover, open `,_jsx(_components.strong,{children:`Access control (IAM)`}),` and assign `,_jsx(_components.strong,{children:`Reader`}),` (or a narrower custom role) to those people.`]}),_jsx(_components.p,{children:`The OAuth permission lets the gateway call Azure as you; it grants access to nothing by itself. Skipping this produces a connection that works and answers nothing: Azure returns an empty list of subscriptions, with no error to read.`})]}),_jsx(Step,{title:`Set the risky-operation decisions`,children:_jsxs(_components.p,{children:[`Azure has a roster of risky operations, all of them denied until an administrator decides otherwise. See `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-app-permissions`,children:`Application permissions`}),` for what each one covers, and `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-admin-setup#set-the-applications-policy`,children:`Set the application’s policy`}),` for how to set them.`]})}),_jsx(Step,{title:`Verify it worked`,children:_jsxs(_components.p,{children:[`Connect Azure as a user, from the Governance App under `,_jsx(_components.strong,{children:`AI Agent Gateway`}),`, and ask an agent which subscriptions it can see. An empty answer from someone who `,_jsx(_components.em,{children:`should`}),` see subscriptions means the role assignment in the previous step is missing, not the connection.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`bringing-your-own-application-for-azure`,children:`Bringing your own application for Azure`}),`\n`,_jsx(_components.p,{children:`Optional, and only if you would rather Azure ran on an application your organization owns and can revoke.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Register a separate application`,children:[_jsxs(_components.p,{children:[`Register it the same way as the Entra ID one - `,_jsx(_components.strong,{children:`App registrations`}),` -> `,_jsx(_components.strong,{children:`New registration`}),`, a recognizable name such as `,_jsx(_components.code,{children:`Oleria AI Agent Gateway - Azure`}),`, `,_jsx(_components.strong,{children:`Redirect URI`}),` of type `,_jsx(_components.strong,{children:`Web`}),` set to the Azure callback URL above - then create a client secret under `,_jsx(_components.strong,{children:`Certificates \u0026 secrets`}),`.`]}),_jsxs(_components.p,{children:[`You `,_jsx(_components.em,{children:`can`}),` instead add Azure to your Entra ID registration, by adding the Azure callback as a second `,_jsx(_components.strong,{children:`Web`}),` redirect URI. It works, and it is the trade most organizations regret. Consent in Microsoft is granted per `,_jsx(_components.strong,{children:`application`}),`: one registration serving both means whoever approves Entra ID’s directory access approves cloud control-plane access at the same moment, on the same screen, and revoking one revokes the other. A second registration costs one more secret to rotate and keeps the two decisions separate - which is why Oleria’s own applications are split this way.`]})]}),_jsx(Step,{title:`Add the API permission`,children:_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`API permissions`}),` -> `,_jsx(_components.strong,{children:`Add a permission`}),` -> `,_jsx(_components.strong,{children:`Azure Service Management`}),` -> `,_jsx(_components.strong,{children:`Delegated permissions`}),`, and add `,_jsx(_components.code,{children:`user_impersonation`}),`.`]})}),_jsxs(Step,{title:`Collect the values Oleria needs`,children:[_jsxs(_components.p,{children:[`From the registration’s `,_jsx(_components.strong,{children:`Overview`}),` page, copy the `,_jsx(_components.strong,{children:`Application (client) ID`}),` and the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),`. You already have the client secret.`]}),_jsxs(_components.p,{children:[`Supply the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),` whenever your registration is single-tenant, which is the default for a new one. Without it, Microsoft rejects the sign-in with `,_jsx(_components.code,{children:`AADSTS50194`}),`.`]})]}),_jsx(Step,{title:`Enter the credentials in Oleria`,children:_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Microsoft Azure`}),` row under `,_jsx(_components.strong,{children:`OAuth Access`}),`, turn on `,_jsx(_components.strong,{children:`Bring your own credentials`}),` and enter the `,_jsx(_components.strong,{children:`Application (client) ID`}),`, the `,_jsx(_components.strong,{children:`Client Secret`}),`, and the `,_jsx(_components.strong,{children:`Directory (tenant) ID`}),`. Select `,_jsx(_components.strong,{children:`Save`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`okta`,children:`Okta`}),`\n`,_jsxs(_components.p,{children:[`Okta has no cross-organization application - its sign-in and its API both live on your own `,_jsx(_components.code,{children:`acme.okta.com`}),` host - so there is always an app integration for you to create. Everything in this section is required.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Callback URL`}),` - enter this as the sign-in redirect URI on the integration you create:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://ai-gateway.prod.oleria.io/connect/apps/okta/callback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create the app integration`,children:[_jsxs(_components.p,{children:[`In the Okta Admin Console, go to `,_jsx(_components.strong,{children:`Applications`}),` -> `,_jsx(_components.strong,{children:`Applications`}),` -> `,_jsx(_components.strong,{children:`Create App Integration`}),`. Choose `,_jsx(_components.strong,{children:`OIDC - OpenID Connect`}),` and `,_jsx(_components.strong,{children:`Web Application`}),`.`]}),_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Sign-in redirect URIs`}),`, enter the Okta callback URL above. Under `,_jsx(_components.strong,{children:`Grant type`}),`, keep `,_jsx(_components.strong,{children:`Authorization Code`}),` and also select `,_jsx(_components.strong,{children:`Refresh Token`}),` - without it, people have to sign in again every hour.`]})]}),_jsxs(Step,{title:`Assign the people who will use it`,children:[_jsxs(_components.p,{children:[`On the integration’s `,_jsx(_components.strong,{children:`Assignments`}),` tab, assign the people or groups who will connect Okta - the same way you would for any other Okta application.`]}),_jsx(_components.p,{children:`Okta will not sign an unassigned person in, so skipping this stops each of them at Okta rather than at Oleria, with nothing on the Oleria side to show why.`})]}),_jsxs(Step,{title:`Grant the Okta API scopes`,children:[_jsx(_components.p,{children:`This is the step that is easy to miss, because nothing about creating the integration hints at it.`}),_jsxs(_components.p,{children:[`Open the integration’s `,_jsx(_components.strong,{children:`Okta API Scopes`}),` tab and grant these scopes:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Scope`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Why it’s needed`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`okta.users.read`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Read user accounts and their status.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`okta.groups.read`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Read groups and their membership.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`okta.apps.read`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Read application assignments.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`okta.logs.read`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Read the system log, for sign-in and admin activity questions.`})]})]})]}),_jsxs(_components.p,{children:[`These are your organization’s own Okta management scopes, granted to the integration on this tab - not scopes you add to a custom authorization server under `,_jsx(_components.strong,{children:`Security`}),` -> `,_jsx(_components.strong,{children:`API`}),`. Okta does not grant them because the gateway asks for them. An integration that skips this connects successfully and then refuses every call.`]})]}),_jsx(Step,{title:`Collect the values Oleria needs`,children:_jsxs(_components.p,{children:[`From the integration’s `,_jsx(_components.strong,{children:`General`}),` tab, copy the `,_jsx(_components.strong,{children:`Client ID`}),` and the `,_jsx(_components.strong,{children:`Client Secret`}),`. You also need your organization’s Okta URL, such as `,_jsx(_components.code,{children:`https://acme.okta.com`}),` - the host you sign in to.`]})}),_jsxs(Step,{title:`Enable the application and enter the credentials`,children:[_jsxs(_components.p,{children:[`In the admin portal, go to `,_jsx(_components.strong,{children:`Governance`}),` -> `,_jsx(_components.strong,{children:`Oleria AI Agent Gateway`}),`, and on the `,_jsx(_components.strong,{children:`OAuth Access`}),` tab select the `,_jsx(_components.strong,{children:`Okta`}),` row. In `,_jsx(_components.strong,{children:`Registry`}),`, turn the application on, turn on `,_jsx(_components.strong,{children:`Bring your own credentials`}),`, and fill in `,_jsx(_components.strong,{children:`Client ID`}),`, `,_jsx(_components.strong,{children:`Client Secret`}),`, and `,_jsx(_components.strong,{children:`Okta Org URL`}),`.`]}),_jsxs(_components.p,{children:[`The org URL is not optional bookkeeping - it completes the address the gateway signs people in at, since Okta authenticates against your organization’s own host. The gateway refuses to start a sign-in while it is missing, rather than sending people to an address that cannot work. It must be `,_jsx(_components.code,{children:`https`}),`.`]}),_jsx(_components.p,{children:`The client secret is encrypted with your tenant’s own key and is never displayed again after saving.`})]}),_jsxs(Step,{title:`Set the risky-operation decisions`,children:[_jsxs(_components.p,{children:[`Okta has a roster of risky operations, all of them denied until an administrator decides otherwise. See `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-app-permissions`,children:`Application permissions`}),` for what each one covers, and `,_jsx(_components.a,{href:`/governance/ai-agent-gateway-admin-setup#set-the-applications-policy`,children:`Set the application’s policy`}),` for how to set them.`]}),_jsxs(_components.p,{children:[`Then select `,_jsx(_components.strong,{children:`Save`}),`. Every field shown for the application is required - the gateway will not start a sign-in until each is supplied.`]})]}),_jsxs(Step,{title:`Verify it worked`,children:[_jsxs(_components.p,{children:[`Connect Okta as a user, from the Governance App under `,_jsx(_components.strong,{children:`AI Agent Gateway`}),`, and check the consent screen - it should name your own integration.`]}),_jsxs(_components.p,{children:[`Then confirm it from Okta’s side, which is the evidence that traffic is running through your client: open the app integration and check `,_jsx(_components.strong,{children:`Reports`}),` or the System Log for authorizations against it.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`when-credentials-change`,children:`When credentials change`}),`\n`,_jsx(_components.p,{children:`Two changes break existing connections, and neither announces itself:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rotating a client secret you own.`}),` Update it in the `,_jsx(_components.strong,{children:`Registry`}),` section as soon as you rotate it in the provider. Until you do, tokens fail to refresh as they expire, and people are gradually treated as not connected. Oleria’s own applications are rotated by Oleria, and need nothing from you.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Switching to a different registration.`}),` Tokens issued to the old client cannot be refreshed by a new one. Ask anyone already using the application to disconnect and reconnect - it takes a few seconds.`]}),`\n`,_jsx(_components.p,{children:`If a required field is missing, the gateway stops the sign-in and says so, naming the field to set. That is the intended behavior: a connection is never made against a partially configured application.`}),`\n`,_jsx(Heading,{level:`2`,id:`contact-us`,children:`Contact us`}),`\n`,_jsxs(_components.p,{children:[`For questions, contact us at `,_jsx(_components.a,{href:`mailto:support@oleria.com`,children:`support@oleria.com`}),`.`]})]})}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":"Connect identity and cloud platforms","description":"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.","href":"/governance/ai-agent-gateway-identity-platforms"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What an agent can do once connected","slug":"what-an-agent-can-do-once-connected","depth":2,"children":[]},{"title":"Microsoft Entra ID","slug":"microsoft-entra-id","depth":2,"children":[{"title":"Bringing your own application for Entra ID","slug":"bringing-your-own-application-for-entra-id","depth":3,"children":[]}]},{"title":"Microsoft Azure","slug":"microsoft-azure","depth":2,"children":[{"title":"Bringing your own application for Azure","slug":"bringing-your-own-application-for-azure","depth":3,"children":[]}]},{"title":"Okta","slug":"okta","depth":2,"children":[]},{"title":"When credentials change","slug":"when-credentials-change","depth":2,"children":[]},{"title":"Contact us","slug":"contact-us","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dev-oleria","siteName":"Oleria Identity Security","title":"Connect identity and cloud platforms - Oleria Identity Security","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-18T13:46:29.292Z","originalFileLocation":"governance/ai-agent-gateway-identity-platforms.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=\"light\"}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, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Oleria Identity Security\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_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/dev-oleria/m5RjRnbvxK5rgVTJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connect identity and cloud platforms - Oleria Identity Security\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Oleria Identity Security\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dev-oleria.mintlify.site/_mintlify/api/og/v2?division=AI+Agent+Gateway\u0026amp;title=Connect+identity+and+cloud+platforms\u0026amp;description=Connect+Microsoft+Entra+ID%2C+Microsoft+Azure%2C+and+Okta+to+the+AI+Agent+Gateway%2C+so+agents+can+answer+questions+about+your+directory%2C+your+subscriptions%2C+and+your\u0026amp;theme=d9799bde04686b617e6a5a94\u0026amp;signature=c7061986ce648b5aabe782fcf25ca14177c97509673562f61dcb4ffe205e7943\">\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=\"Connect identity and cloud platforms - Oleria Identity Security\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dev-oleria.mintlify.site/_mintlify/api/og/v2?division=AI+Agent+Gateway\u0026amp;title=Connect+identity+and+cloud+platforms\u0026amp;description=Connect+Microsoft+Entra+ID%2C+Microsoft+Azure%2C+and+Okta+to+the+AI+Agent+Gateway%2C+so+agents+can+answer+questions+about+your+directory%2C+your+subscriptions%2C+and+your\u0026amp;theme=d9799bde04686b617e6a5a94\u0026amp;signature=c7061986ce648b5aabe782fcf25ca14177c97509673562f61dcb4ffe205e7943\">\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/dev-oleria/m5RjRnbvxK5rgVTJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Oleria Identity Security\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#027864\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/governance/ai-agent-gateway-identity-platforms.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.oleria.ai/#organization\",\"name\":\"Oleria Identity Security\",\"url\":\"https://docs.oleria.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dev-oleria/6TR7wXwCMQAv-eRG/images/OleriaLightMode-1.png?fit=max\u0026auto=format\u0026n=6TR7wXwCMQAv-eRG\u0026q=85\u0026s=82d13b20d2911e74791665a1d455d1c1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.oleria.ai#website\",\"name\":\"Oleria Identity Security\",\"url\":\"https://docs.oleria.ai\",\"publisher\":{\"@id\":\"https://docs.oleria.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms#webpage\",\"url\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms\",\"name\":\"Connect identity and cloud platforms\",\"description\":\"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.\",\"dateModified\":\"2026-09-18T13:46:29.292Z\",\"isPartOf\":{\"@id\":\"https://docs.oleria.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Governance\",\"item\":\"https://docs.oleria.ai/governance/access-requests\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI Agent Gateway\",\"item\":\"https://docs.oleria.ai/governance/ai-agent-gateway-overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Connect identity and cloud platforms\",\"item\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms#article\",\"headline\":\"Connect identity and cloud platforms\",\"name\":\"Connect identity and cloud platforms\",\"description\":\"Connect Microsoft Entra ID, Microsoft Azure, and Okta to the AI Agent Gateway, so agents can answer questions about your directory, your subscriptions, and your Okta organization.\",\"url\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms\",\"mainEntityOfPage\":{\"@id\":\"https://docs.oleria.ai/governance/ai-agent-gateway-identity-platforms#webpage\"},\"dateModified\":\"2026-09-18T13:46:29.292Z\",\"publisher\":{\"@id\":\"https://docs.oleria.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.oleria.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Oleria Identity Security\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Oleria Identity Security\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/governance/ai-agent-gateway-identity-platforms.md","siteName":"Oleria Identity Security","nav":{"global":null,"tabs":[{"tab":"Product","groups":[{"group":"Getting Started","pages":[{"title":"Oleria Identity Security","href":"/introduction/overview"},{"title":"Oleria AI","href":"/posture/oleria-ai"},{"title":"Oleria MCP","href":"/introduction/oleria-mcp"}]},{"group":"Posture","pages":[{"title":"Adaptive Security","href":"/posture/oleria-adaptive-security-overview"},{"title":"Risk Monitoring","href":"/posture/risk-monitoring-overview"},{"group":"Access Graph","pages":[{"title":"Access Graph","href":"/posture/access-graph-overview"},{"title":"Read the Access Graph","href":"/posture/explore-access-graph"},{"title":"Navigate and search the Access Graph","href":"/posture/navigate-access-graph"}]},{"group":"Activity Analysis","pages":[{"title":"Activity Analysis","href":"/posture/activity-analysis-overview"},{"title":"Activity dashboard","href":"/posture/activity-dashboard"},{"title":"Activity details","href":"/posture/activity-details"}]},{"group":"Access Inventory","pages":[{"title":"Access Inventory","href":"/posture/access-inventory-overview"},{"title":"Using Access Inventory","href":"/posture/learn-access-inventory"}]},{"group":"Workflows","pages":[{"title":"Overview","href":"/posture/workflows-overview"},{"title":"Workflow templates","href":"/posture/workflow-templates"},{"title":"Disable dormant accounts","href":"/posture/disable-dormant-accounts-workflow"},{"title":"Security insights email","href":"/posture/security-insights-email-workflow"},{"title":"Enforce MFA compliance","href":"/posture/enforce-mfa-compliance-workflow"},{"title":"Manage stale SharePoint sites","href":"/posture/manage-stale-sharepoint-sites-workflow"},{"title":"Detect and report Shadow IT","href":"/posture/detect-report-shadow-it-workflow"}]},{"group":"Non-human identities","pages":[{"title":"Non-human identities (NHI)","href":"/posture/nhi-overview"},{"title":"NHI ownership assignment","href":"/posture/nhi-ownership-assignment-workflow"},{"title":"How Oleria assigns NHI ownership","href":"/posture/nhi-ownership-assignment-logic"},{"title":"NHI credential expiry","href":"/posture/nhi-credential-expiry-workflow"}]}]},{"group":"Governance","pages":[{"title":"Access Requests","href":"/governance/access-requests"},{"group":"Access Reviews","pages":[{"title":"Access Reviews","href":"/governance/access-review"},{"title":"Employee access insights","href":"/governance/employee-access-insights"}]},{"group":"Account Hygiene","pages":[{"title":"Account Hygiene","href":"/governance/account-hygiene-overview"},{"title":"Password age","href":"/governance/last-password-change-insights"}]},{"group":"AI Agent Gateway","pages":[{"title":"AI Agent Gateway","href":"/governance/ai-agent-gateway-overview"},{"title":"Administrator setup","href":"/governance/ai-agent-gateway-admin-setup"},{"title":"User setup","href":"/governance/ai-agent-gateway-user-setup"},{"title":"Connect and use your AI agent","href":"/governance/ai-agent-gateway-connect-agents"},{"title":"Bring your own OAuth app","description":"Register your own OAuth application with a provider and have the gateway use it instead of Oleria's, so the connection runs on a client your organization owns and can revoke.","href":"/governance/ai-agent-gateway-byo-oauth"},{"title":"Connect identity and cloud platforms","href":"/governance/ai-agent-gateway-identity-platforms"},{"title":"Application permissions","description":"The OAuth permissions the gateway requests when you connect an application, and the risky operations Oleria recognizes in each one.","href":"/governance/ai-agent-gateway-app-permissions"}]},{"title":"Application Hygiene","href":"/governance/application-hygiene-overview"},{"title":"Dormancy thresholds","href":"/governance/account-dormant-days"},{"group":"Employee Lifecycle","pages":[{"title":"Joiner","href":"/governance/employee-lifecycle-joiner"},{"title":"Mover","href":"/governance/employee-lifecycle-mover"},{"title":"Leaver","href":"/governance/employee-lifecycle-leaver"},{"title":"Access Bundles","href":"/governance/access-bundles-and-adaptive-recommendations"},{"title":"Access Bundle Presets","href":"/governance/access-bundle-presets"}]},{"title":"External access","href":"/governance/external-access"},{"title":"Group Hygiene","href":"/governance/group-hygiene-overview"},{"group":"Remediations","pages":[{"title":"Remediations","href":"/governance/remediations-overview"},{"title":"View remediation actions","href":"/governance/view-remediation-actions"},{"title":"Disable dormant accounts","href":"/governance/disable-dormant-accounts"},{"title":"Revoke external user access","href":"/governance/revoke-external-users-access-permissions"},{"title":"Remove an account from a group","href":"/governance/remove-account-from-group"}]}]},{"group":"Administration","pages":[{"title":"User management","href":"/administration/user-management-overview"},{"title":"Default user roles","href":"/administration/default-user-roles"},{"title":"Manage users","href":"/administration/manage-users"},{"title":"Update a user's role","href":"/administration/update-a-users-role"},{"title":"Remove a user","href":"/administration/remove-a-user"},{"title":"SCIM user provisioning","href":"/administration/scim-user-provisioning"},{"title":"Governance App SCIM provisioning","href":"/administration/scim-governance-provisioning"},{"title":"User attributes","href":"/administration/user-attributes"},{"title":"User profile settings","href":"/administration/user-profile-settings"},{"title":"Business rules","href":"/administration/workspace-settings-business-rules"},{"title":"Authentication methods","href":"/administration/authentication-methods"},{"title":"SSO configuration","href":"/administration/sso-configuration"},{"group":"Identity Provider Setup Guides","pages":[{"title":"Okta: end-to-end SSO and SCIM setup","href":"/administration/okta-sso-scim-setup"},{"title":"Microsoft Entra ID: end-to-end SSO and SCIM setup","href":"/administration/entra-sso-scim-setup"}]},{"title":"Email notifications","href":"/administration/email-notifications"},{"title":"Ticketing","href":"/workspace/ticketing-overview"},{"title":"Audit log","href":"/governance/audit-log-overview"}]},{"group":"Support","pages":[{"title":"Support","href":"/support/overview"},{"title":"Help","href":"/support/help"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/developer-docs/api-reference/overview"}]},{"tab":"What's New","pages":[{"title":"What's New","href":"/release-notes"}]}]},"basePath":"","title":"Connect identity and cloud platforms - Oleria Identity Security","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}