Dittofeed offers three “Auth Modes”, each of which varies in its level of flexibility and ease of use. The three modes are:
Anonymous: No authentication is required to access the Dittofeed Dashboard or API.
Single Tenant: A minimalistic authentication setup that allows you to create a
single, shared, password protected user account for your Dittofeed instance.
Multi Tenant: A more complex authentication setup that allows you to integrate
with any OIDC compliant identity provider. This allows for multiple users to
access your Dittofeed instance, each with their own credentials.
This is the default auth mode for Dittofeed. It requires no configuration and works out of the box. It is not recommended for production use, but is useful for testing and development. This auth mode is visible in our demo instance.
A minimalistic authentication setup that allows you to create a single, shared, password protected user account for your Dittofeed instance.
Currently the single-tenant auth mode is only available with dittofeed-lite.
This setup can be configured by provide the following environment variables to Dittofeed:
AUTH_MODE='single-tenant'# to be shared among users accessing the dashboardPASSWORD=<your-password># used to secure user sessionsSECRET_KEY=<your-secret-key>
The SECRET_KEY should be a 32 byte string. You can generate one using the following script,
const crypto = require('crypto');function generateSecretKey(bytes = 32) { const buffer = crypto.randomBytes(bytes); // Generate 32 random bytes return buffer.toString('base64'); }randomString = generateSecretKey();console.log(randomString); // This will be a 64-character hexadecimal string
Single Tenant is the default auth mode for Dittofeed’s Render deployment.
The multi-tenant auth mode allows you to integrate with any OIDC compliant identity provider e.g. auth0. This allows for multiple users to access your Dittofeed instance, each with their own credentials. It also allows you to host multiple workspaces on a single Dittofeed instance.For more information on how to configure the multi-tenant auth mode, please refer to the multi-tenant Auth Mode documentation.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dittofeed","colors":{"primary":"#FF8101","light":"#FFDA71","dark":"#FF8101"},"logo":{"light":"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/light.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bdd0cf89297f94a24d09411bb12cea58","dark":"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/dark.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bc60648977c0f46358a8dce1c687e3b1","href":"https://dittofeed.com"},"favicon":"/favicon_1.png","api":{"playground":{"display":"interactive"},"mdx":{"auth":{"method":"key","name":"Authorization"},"server":"http://localhost:3001"}},"navbar":{"links":[{"label":"Community","href":"https://discord.gg/HajPkCG4Mm"}],"primary":{"type":"github","href":"https://github.com/dittofeed/dittofeed"}},"footer":{"socials":{"twitter":"https://twitter.com/dittofeed","github":"https://github.com/dittofeed/dittofeed","linkedin":"https://www.linkedin.com/company/dittofeed"}},"integrations":{"posthog":{"apiKey":"phc_nAONMdL3n31UGZLr5QmIpPlyHqHV327DgxPCRjMusrG"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Get Instant Help","icon":"discord","href":"https://discord.gg/HajPkCG4Mm"},{"anchor":"Tutorial Videos","icon":"youtube","href":"https://www.youtube.com/@Dittofeed"},{"anchor":"Demo App","icon":"bullseye-pointer","href":"https://demo.dittofeed.com/dashboard/journeys"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dittofeed","hasAudioNarration":false,"actualSubdomain":"dittofeed","customDomains":["docs.dittofeed.com"],"gitSource":{"type":"github","owner":"dittofeed","repo":"dittofeed","deployBranch":"main","contentDirectory":"packages/docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a20c349cf0492c7637e2b41","collectionId":"d3cd599d-7566-4637-ad50-073b413392a4","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a20c349cf0492c7637e2b41:success","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Documentation","count":108},{"language":"default","tag":"API Reference","count":94},{"language":"default","tag":"Workspace Resources","count":38},{"language":"default","tag":"Deployment","count":26},{"language":"default","tag":"Self-Hosting Options","count":24},{"language":"default","tag":"Integrations","count":22},{"language":"default","tag":"Upgrade Guide","count":14},{"language":"default","tag":"User Guides","count":14},{"language":"default","tag":"Message Channel Types","count":10},{"language":"default","tag":"Segment Nodes","count":10}]},"assistantConfig":{},"basePath":"","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":"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":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"deployment/self-hosted/auth-modes","slug":"/deployment/self-hosted/auth-modes","pageMetadata":{"title":"Authentication and Authorization in Dittofeed","description":null,"href":"/deployment/self-hosted/auth-modes"},"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`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Dittofeed offers three “Auth Modes”, each of which varies in its level of flexibility and ease of use. The three modes are:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#anonymous`,children:`Anonymous`}),`: No authentication is required to access the Dittofeed Dashboard or API.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#single-tenant`,children:`Single Tenant`}),`: A minimalistic authentication setup that allows you to create a\nsingle, shared, password protected user account for your Dittofeed instance.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#multi-tenant`,children:`Multi Tenant`}),`: A more complex authentication setup that allows you to integrate\nwith any OIDC compliant identity provider. This allows for multiple users to\naccess your Dittofeed instance, each with their own credentials.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`anonymous`,children:`Anonymous`}),`\n`,_jsxs(_components.p,{children:[`This is the default auth mode for Dittofeed. It requires no configuration and works out of the box. It is not recommended for production use, but is useful for testing and development. This auth mode is visible in our `,_jsx(_components.a,{href:`https://demo.dittofeed.com`,children:`demo`}),` instance.`]}),`\n`,_jsx(Heading,{level:`2`,id:`single-tenant`,children:`Single Tenant`}),`\n`,_jsx(_components.p,{children:`A minimalistic authentication setup that allows you to create a single, shared, password protected user account for your Dittofeed instance.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Currently the `,_jsx(_components.code,{children:`single-tenant`}),` auth mode is only available with dittofeed-lite.`]})}),`\n`,_jsx(_components.p,{children:`This setup can be configured by provide the following environment variables to Dittofeed:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`AUTH_MODE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'single-tenant'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# to be shared among users accessing the dashboard`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your-password`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# used to secure user sessions`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SECRET_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your-secret-key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`SECRET_KEY`}),` should be a 32 byte string. You can generate one using the following script,`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` crypto`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` require`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'crypto'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` generateSecretKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`bytes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 32`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` buffer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` crypto`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`randomBytes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`bytes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Generate 32 random bytes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'base64'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`randomString`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` generateSecretKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`randomString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// This will be a 64-character hexadecimal string`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Single Tenant is the default auth mode for Dittofeed’s `,_jsx(_components.a,{href:`/deployment/self-hosted/render`,children:`Render`}),` deployment.`]}),`\n`,_jsx(Heading,{level:`2`,id:`multi-tenant`,children:`Multi Tenant`}),`\n`,_jsx(_components.p,{children:`The multi-tenant auth mode allows you to integrate with any OIDC compliant identity provider e.g. auth0. This allows for multiple users to access your Dittofeed instance, each with their own credentials. It also allows you to host multiple workspaces on a single Dittofeed instance.`}),`\n`,_jsxs(_components.p,{children:[`For more information on how to configure the multi-tenant auth mode, please refer to the `,_jsx(_components.a,{href:`/deployment/self-hosted/auth-modes/multi-tenant`,children:`multi-tenant Auth Mode`}),` documentation.`]})]})}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":"Authentication and Authorization in Dittofeed","description":null,"href":"/deployment/self-hosted/auth-modes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Anonymous","slug":"anonymous","depth":2,"children":[]},{"title":"Single Tenant","slug":"single-tenant","depth":2,"children":[]},{"title":"Multi Tenant","slug":"multi-tenant","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dittofeed","siteName":"Dittofeed","title":"Authentication and Authorization in Dittofeed - Dittofeed","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-03T21:41:11.641Z","originalFileLocation":"deployment/self-hosted/auth-modes.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=\"application-name\" content=\"Dittofeed\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_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/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication and Authorization in Dittofeed - Dittofeed\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dittofeed\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dittofeed.mintlify.app/_mintlify/api/og/v2?division=Self-Hosting+Options\u0026amp;title=Authentication+and+Authorization+in+Dittofeed\u0026amp;theme=c297dfe8c764693da552b860\u0026amp;signature=cdf8414d26d06da4156dcd60d0dee44efa8609a8bdeec299cfbe3eddbf6bd860\">\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=\"Authentication and Authorization in Dittofeed - Dittofeed\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dittofeed.mintlify.app/_mintlify/api/og/v2?division=Self-Hosting+Options\u0026amp;title=Authentication+and+Authorization+in+Dittofeed\u0026amp;theme=c297dfe8c764693da552b860\u0026amp;signature=cdf8414d26d06da4156dcd60d0dee44efa8609a8bdeec299cfbe3eddbf6bd860\">\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/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dittofeed\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF8101\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/deployment/self-hosted/auth-modes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dittofeed.com/#organization\",\"name\":\"Dittofeed\",\"url\":\"https://docs.dittofeed.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/light.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bdd0cf89297f94a24d09411bb12cea58\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dittofeed.com#website\",\"name\":\"Dittofeed\",\"url\":\"https://docs.dittofeed.com\",\"publisher\":{\"@id\":\"https://docs.dittofeed.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes#webpage\",\"url\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes\",\"name\":\"Authentication and Authorization in Dittofeed\",\"dateModified\":\"2025-12-03T21:41:11.641Z\",\"isPartOf\":{\"@id\":\"https://docs.dittofeed.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deployment\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-Hosting Options\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted/render\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Authentication and Authorization in Dittofeed\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes#article\",\"headline\":\"Authentication and Authorization in Dittofeed\",\"name\":\"Authentication and Authorization in Dittofeed\",\"url\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/auth-modes#webpage\"},\"dateModified\":\"2025-12-03T21:41:11.641Z\",\"publisher\":{\"@id\":\"https://docs.dittofeed.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dittofeed.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dittofeed\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dittofeed","nav":{"global":{"anchors":[{"anchor":"Get Instant Help","icon":"discord","href":"https://discord.gg/HajPkCG4Mm"},{"anchor":"Tutorial Videos","icon":"youtube","href":"https://www.youtube.com/@Dittofeed"},{"anchor":"Demo App","icon":"bullseye-pointer","href":"https://demo.dittofeed.com/dashboard/journeys"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quick Start","href":"/quick-start"},{"title":"Video Walkthrough","href":"/video-walkthrough"},{"title":"dittofeed-ee","href":"/dittofeed-ee"},{"title":"Glossary","href":"/glossary"}]},{"group":"Deployment","pages":[{"title":"Self-hosting Dittofeed","href":"/deployment/self-hosted"},{"group":"Self-Hosting Options","pages":[{"title":"Self-Host with Render","href":"/deployment/self-hosted/render"},{"title":"Self-Host with Docker Compose","href":"/deployment/self-hosted/docker-compose"},{"title":"Self-Host with Kubernetes","href":"/deployment/self-hosted/kubernetes"},{"title":"Self-Host with AWS Cloudformation","href":"/deployment/self-hosted/cloudformation"},{"title":"dittofeed-ee","description":null,"href":"/deployment/self-hosted/dittofeed-ee"},{"title":"Authentication and Authorization in Dittofeed","href":"/deployment/self-hosted/auth-modes"},{"group":"Auth Modes","pages":[{"title":"multi-tenant Auth Mode","description":"Enable multi-tenancy in your Dittofeed instance.","href":"/deployment/self-hosted/auth-modes/multi-tenant"}]},{"group":"Upgrade Guide","pages":[{"title":"Upgrading from v0.22.0 to v0.23.0","href":"/deployment/self-hosted/upgrade-guide/v0-23-0"},{"title":"Upgrading from v0.21.0 to v0.22.0","href":"/deployment/self-hosted/upgrade-guide/v0-22-0"},{"title":"Upgrading from v0.20.0 to v0.21.0","href":"/deployment/self-hosted/upgrade-guide/v0-21-0"},{"title":"Upgrading from v0.19.0 to v0.20.0","href":"/deployment/self-hosted/upgrade-guide/v0-20-0"},{"title":"Upgrading from v0.18.1 to v0.19.0","href":"/deployment/self-hosted/upgrade-guide/v0-19-0"},{"title":"Upgrading from v0.17.0 to v0.18.1","href":"/deployment/self-hosted/upgrade-guide/v0-18-0"},{"title":"Upgrading from v0.16.0 to v0.17.0","href":"/deployment/self-hosted/upgrade-guide/v0-17-0"},{"title":"Upgrading from v0.15.0 to v0.16.0","href":"/deployment/self-hosted/upgrade-guide/v0-16-0"},{"title":"Upgrading from v0.14.0 to v0.15.0","href":"/deployment/self-hosted/upgrade-guide/v0-15-0"},{"title":"Upgrading from v0.13.13 to v0.14.0","href":"/deployment/self-hosted/upgrade-guide/v0-14-0"},{"title":"Upgrading from v0.12.1 to v0.13.1","href":"/deployment/self-hosted/upgrade-guide/v0-13-0"},{"title":"Upgrading from v0.11.0 to v0.12.1","href":"/deployment/self-hosted/upgrade-guide/v0-12-0"},{"title":"Upgrading from v0.10.0 to v0.11.2","href":"/deployment/self-hosted/upgrade-guide/v0-11-0"},{"title":"Upgrading from v0.9.0 to v0.10.0","href":"/deployment/self-hosted/upgrade-guide/v0-10-0"}]},{"title":"Write Modes","href":"/deployment/self-hosted/write-modes"},{"group":"Write Modes","pages":[{"title":"Kafka Write Mode","href":"/deployment/self-hosted/write-modes/kafka"}]},{"title":"Blob Storage","href":"/deployment/self-hosted/blob-storage"}]},{"title":"Using Dittofeed Cloud","href":"/deployment/cloud"}]},{"group":"Integrations","pages":[{"title":"Data Sources","href":"/integrations/sources"},{"group":"Data Source Types","pages":[{"title":"Using Segment.io as a Source","href":"/integrations/sources/segment"},{"title":"Using Dittofeed's REST API as a source","href":"/integrations/sources/api"},{"title":"Using Dittofeed's Polytomic Integration","href":"/integrations/sources/polytomic"}]},{"title":"Message Channels","href":"/integrations/channels"},{"group":"Message Channel Types","pages":[{"title":"Sending Email with Dittofeed","href":"/integrations/channels/email"},{"title":"SendGrid Integration","href":"/integrations/channels/sendgrid"},{"title":"Postmark Integration","href":"/integrations/channels/postmark"},{"title":"Resend Integration","href":"/integrations/channels/resend"},{"title":"SMTP Server Integration","href":"/integrations/channels/smtp"},{"title":"Amazon SES Integration","href":"/integrations/channels/amazonses"},{"title":"Sending SMS with Dittofeed","href":"/integrations/channels/sms"},{"title":"Twilio SMS Integration","href":"/integrations/channels/twilio"},{"title":"Triggering Webhooks with Dittofeed","href":"/integrations/channels/webhooks"},{"title":"Mailchimp Integration via Mandrill","href":"/integrations/channels/mailchimp"}]},{"title":"SDK's","href":"/integrations/sdks"},{"group":"Available SDK's","pages":[{"title":"Web SDK","href":"/integrations/sdks/web"},{"title":"Node.js SDK","href":"/integrations/sdks/node"},{"title":"React Native SDK","href":"/integrations/sdks/react-native"}]},{"title":"Data Destinations","href":"/integrations/destinations"},{"group":"Data Destination Types","pages":[{"title":"Hubspot Destination","href":"/integrations/destinations/hubspot"},{"title":"CSV Export Destination","href":"/integrations/destinations/csv"}]}]},{"group":"Workspace Resources","pages":[{"title":"Resources","href":"/resources/introduction"},{"title":"Journeys","href":"/resources/journeys"},{"group":"Journey Nodes","pages":[{"title":"Entry - Journey Node","href":"/resources/journey-nodes/entry"},{"title":"Message - Journey Node","href":"/resources/journey-nodes/message"},{"title":"Wait For - Journey Node","href":"/resources/journey-nodes/wait-for"},{"title":"Delay - Journey Node","href":"/resources/journey-nodes/delay"},{"title":"Segment Split - Journey Node","href":"/resources/journey-nodes/segment-split"},{"title":"Exit - Journey Node","href":"/resources/journey-nodes/exit"}]},{"title":"Segments","href":"/resources/segments"},{"group":"Segment Nodes","pages":[{"title":"Trait - Segment Node","href":"/resources/segment-nodes/trait"},{"title":"Performed - Segment Node","href":"/resources/segment-nodes/performed"},{"title":"And - Segment Node","href":"/resources/segment-nodes/and"},{"title":"Or - Segment Node","href":"/resources/segment-nodes/or"},{"title":"Manual - Segment Node","href":"/resources/segment-nodes/manual"},{"title":"Subscription Group - Segment Node","href":"/resources/segment-nodes/subscription-group"},{"title":"Email - Segment Node","href":"/resources/segment-nodes/email"},{"title":"Random Bucket - Segment Node","href":"/resources/segment-nodes/random-bucket"},{"title":"Keyed Performed Segment","href":"/resources/segment-nodes/keyed-performed"},{"title":"Includes - Segment Node","href":"/resources/segment-nodes/includes"}]},{"title":"Templates","href":"/resources/templates"},{"group":"Template Types","pages":[{"title":"Email Template Editor","href":"/resources/templates/email-editor"},{"title":"MJML Responsive Email","href":"/resources/templates/mjml"},{"title":"Liquid Presets","href":"/resources/templates/liquid-presets"},{"title":"Free MJML Email Templates","href":"/resources/templates/free-mjml-email-templates"},{"title":"SMS Template Editor","href":"/resources/templates/sms-editor"},{"title":"Webhook Template Editor","href":"/resources/templates/webhook-editor"}]},{"title":"Workspaces","href":"/resources/workspaces"},{"title":"Subscription Groups","href":"/resources/subscription-groups"},{"title":"User Properties","href":"/resources/user-properties"},{"group":"User Property Types","pages":[{"title":"Trait - User Property","href":"/resources/user-property-types/trait"},{"title":"Performed - User Property","href":"/resources/user-property-types/performed"},{"title":"Any Of - User Property","href":"/resources/user-property-types/any-of"},{"title":"File - User Property","href":"/resources/user-property-types/file"},{"title":"User Id - User Property","href":"/resources/user-property-types/id"},{"title":"Anonymous Id - User Property","href":"/resources/user-property-types/anonymous-id"},{"title":"Keyed Performed - User Property","href":"/resources/user-property-types/keyed-performed"}]},{"title":"Broadcasts","href":"/resources/broadcasts"},{"title":"Groups","href":"/resources/groups"}]},{"group":"User Guides","pages":[{"title":"Submitting User Events","href":"/guide/submitting-user-events"},{"title":"Internal Events","href":"/guide/internal-events"},{"title":null,"href":"/guide/roadmap"},{"title":"Frequently Asked Questions (FAQ)","href":"/guide/faq"},{"title":"Creating Journeys","href":"/guide/creating-journeys"},{"title":"Custom Recipient Properties","href":"/guide/custom-recipient-properties"},{"group":"Sample Journeys","pages":[{"title":"Appointment Reminders","href":"/guide/sample-journeys/appointment-reminders"}]},{"title":"Accessing the Admin API","href":"/guide/accessing-admin-api"},{"title":"Submitting Broadcasts via API","href":"/guide/submitting-broadcasts-api"},{"title":"Mailing List / Newsletter","href":"/guide/mailing-list"},{"title":"View in Browser","href":"/guide/view-in-browser"},{"title":"Custom Subscription Management Page","href":"/guide/custom-subscription-page"},{"title":"Git Based Workflows","href":"/guide/git-workflows"},{"title":null,"href":"/guide/license"}]},{"group":"Contributing","pages":[{"title":"Running Dittofeed Locally","href":"/contributing/running-locally"},{"title":"System Architecture","href":"/contributing/architecture"},{"title":"Updating Dittofeed's API Docs","href":"/contributing/updating-api-docs"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/endpoints/apps/identify"}]},{"tab":"Embedded Components","pages":[{"title":"Embedded Components","href":"/embedded/getting-started"}]}]},"basePath":"","title":"Authentication and Authorization in Dittofeed - Dittofeed","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}