Privy’s embedded wallets are fully compatible with any authentication provider that supports JWT-based, stateless authentication. If you’re looking to add embedded wallets to your app, you can either:
use Privy as your authentication provider (easy to set up out-of-the-box)
use a custom authentication provider (easy to integrate alongside your existing stack)
Integrating with any OIDC/JWT-based authentication system
Privy integrates with any authentication system that relies on asymmetric JWT tokens. This includes popular authentication providers such as Auth0, AWS Cognito, Firebase, as well as all OIDC (OAuth) social providers such as Google, Apple, and Twitter.See the JWT-based authentication guide for more information.
Integrating with Privy’s native authentication methods
Privy’s authentication system provides secure user verification out of the box while maintaining a seamless experience. Privy supports multiple verification methods to accommodate different user needs and security requirements:
Email and phone verification using one-time passwords (OTPs) Learn more
Social authentication through OAuth2.0 with providers like Google, Apple, Twitter, Discord, Github, TikTok, LinkedIn, Spotify, and Instagram Learn more
Sign In With Ethereum (SIWE) and Sign in with Solana (SIWS) for web3-native users Learn more
Custom authentication methods to match your specific needs
Upon successful authentication, Privy issues two types of tokens that work together to maintain secure user sessions.Access tokenThe access token is a JWT (JSON Web Token) signed by an asymmetric key specific to your app. This signature cryptographically ensures that only Privy could have produced the token - it cannot be spoofed or tampered with. The token has a one-hour lifetime, limiting the impact of potential token exposure and enabling quick session revocation if needed.Your backend can use this token to validate authenticated requests from users, and the Privy SDK uses it to determine authentication status in your frontend.Refresh tokenRefresh tokens have a 30-day lifetime by default. Privy’s SDKs manage them automatically to obtain new access tokens and renew existing sessions.
If the Privy SDK detects any token tampering, it immediately invalidates the session and requires
re-authentication. This destroys the corresponding session in Privy’s backend.
Our authentication system includes several security enhancements to protect user sessions. When using a verified domain, tokens can be stored in HttpOnly cookies for enhanced protection against XSS attacks. All tokens are cryptographically signed and verified on both client and server.The Privy SDK manages this complexity for you, handling token rotation, renewal, and invalidation automatically. Your backend can easily validate authenticated requests using the provided access tokens.
Learn more about configuring secure authentication for your application in our security
checklist.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Privy Docs","colors":{"primary":"#010110","light":"#FFFFFF"},"logo":{"light":"https://mintcdn.com/privy-c2af3412/Ih_Fo3QYM486gzWq/logo/privy-logo-light.png?fit=max\u0026auto=format\u0026n=Ih_Fo3QYM486gzWq\u0026q=85\u0026s=bd297b680ace8a13db4d9ce977f93180","dark":"https://mintcdn.com/privy-c2af3412/Ih_Fo3QYM486gzWq/logo/privy-logo-dark.png?fit=max\u0026auto=format\u0026n=Ih_Fo3QYM486gzWq\u0026q=85\u0026s=24d83970695ab19a1803a2eb00dbea4e"},"favicon":"https://mintcdn.com/privy-c2af3412/YByWVKlFbSpnpSJG/favicon.png?fit=max\u0026auto=format\u0026n=YByWVKlFbSpnpSJG\u0026q=85\u0026s=ee4038168ea586e5f72041e5e2a1f5c8","api":{"openapi":{"source":"https://api.staging.privy.io/v1/openapi.json"},"playground":{"display":"interactive"},"examples":{"languages":["curl","java","javascript","php","go"]},"mdx":{"server":"https://api.privy.io"}},"background":{"color":{"light":"#FFFFFF","dark":"#010110"}},"navbar":{"links":[{"href":"https://demo.privy.io","label":"Demo"},{"href":"https://privy.io/slack","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.privy.io"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Privy Docs","og:image":"https://assets.privy.io/docs-og.png","twitter:title":"Privy Docs","twitter:card":"summary_large_image","twitter:image":"https://assets.privy.io/docs-og.png"},"organization":{"id":"https://www.privy.io/#organization","name":"Privy","url":"https://www.privy.io","logo":"https://assets.privy.io/docs-og.png","sameAs":["https://x.com/privy_io","https://github.com/privy-io"]}},"styling":{"codeblocks":"system","latex":true},"integrations":{"gtm":{"tagId":"GTM-WV9MVTB3"}},"contextual":{"options":["claude","chatgpt","cursor","vscode","mcp","copy","view"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"privy-c2af3412","hasAudioNarration":false,"actualSubdomain":"privy-c2af3412","customDomains":["docs.privy.io"],"gitSource":{"type":"github","owner":"privy-io","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"issues":true,"thumbs":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee6add0cb48ef71e0f1964","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Wallets","count":291},{"language":"default","tag":"API reference","count":255},{"language":"default","tag":"Recipes","count":141},{"language":"default","tag":"All recipes","count":140},{"language":"default","tag":"Identity","count":137},{"language":"default","tag":"Signatures and transactions","count":91},{"language":"default","tag":"Users","count":87},{"language":"default","tag":"Basics","count":86},{"language":"default","tag":"Financial flows","count":82},{"language":"default","tag":"Controls","count":76}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/_mintlify/custom/privy-c2af3412/106de3f982828597/style.css"}],"page":{"pagePath":"security/authentication/user-authentication","slug":"/security/authentication/user-authentication","pageMetadata":{"title":"User authentication","sidebarTitle":"User authentication","description":null,"href":"/security/authentication/user-authentication"},"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`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Privy’s embedded wallets are fully compatible with any authentication provider that supports JWT-based, stateless authentication.`}),` If you’re looking to add embedded wallets to your app, you can either:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`use Privy as your authentication provider (easy to set up out-of-the-box)`}),`\n`,_jsx(_components.li,{children:`use a custom authentication provider (easy to integrate alongside your existing stack)`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`integrating-with-any-oidc/jwt-based-authentication-system`,children:`Integrating with any OIDC/JWT-based authentication system`}),`\n`,_jsxs(_components.p,{children:[`Privy integrates with any authentication system that relies on asymmetric JWT tokens. This includes popular authentication providers such as Auth0, AWS Cognito, Firebase, as well as `,_jsx(_components.strong,{children:`all`}),` OIDC (OAuth) social providers such as Google, Apple, and Twitter.`]}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/authentication/user-authentication/jwt-based-auth/overview`,children:`JWT-based authentication guide`}),` for more information.`]}),`\n`,_jsx(Heading,{level:`2`,id:`integrating-with-privy’s-native-authentication-methods`,children:`Integrating with Privy’s native authentication methods`}),`\n`,_jsx(_components.p,{children:`Privy’s authentication system provides secure user verification out of the box while maintaining a seamless experience. Privy supports multiple verification methods to accommodate different user needs and security requirements:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Email and phone verification using one-time passwords (OTPs) `,_jsx(_components.a,{href:`/authentication/user-authentication/login-methods/email`,children:`Learn more`}),` `]}),`\n`,_jsxs(_components.li,{children:[`Social authentication through OAuth2.0 with providers like Google, Apple, Twitter, Discord, Github, TikTok, LinkedIn, Spotify, and Instagram `,_jsx(_components.a,{href:`/authentication/user-authentication/login-methods/oauth`,children:`Learn more`})]}),`\n`,_jsxs(_components.li,{children:[`Sign In With Ethereum (SIWE) and Sign in with Solana (SIWS) for web3-native users `,_jsx(_components.a,{href:`/authentication/user-authentication/login-methods/wallet`,children:`Learn more`})]}),`\n`,_jsx(_components.li,{children:`Custom authentication methods to match your specific needs`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`We do not support regular password-based verification given `,_jsx(_components.a,{href:`https://blog.lastpass.com/2021/09/breaking-the-cycle-of-password-reuse/`,children:`users’ tendencies to use and reuse easy-to-guess passwords`}),`, and the `,_jsx(_components.a,{href:`https://haveibeenpwned.com/`,children:`high incidence of password database breaches`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`token-architecture`,children:`Token architecture`}),`\n`,_jsx(_components.p,{children:`Upon successful authentication, Privy issues two types of tokens that work together to maintain secure user sessions.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Access token`})}),`\n`,_jsxs(_components.p,{children:[`The access token is a `,_jsx(_components.a,{href:`https://jwt.io/introduction`,children:`JWT (JSON Web Token)`}),` signed by an asymmetric key specific to your app. This signature cryptographically ensures that only Privy could have produced the token - it cannot be spoofed or tampered with. The token has a `,_jsx(_components.strong,{children:`one-hour lifetime`}),`, limiting the impact of potential token exposure and enabling quick session revocation if needed.`]}),`\n`,_jsxs(_components.p,{children:[`Your backend can use this token to `,_jsx(_components.a,{href:`/authentication/user-authentication/access-tokens`,children:`validate authenticated requests`}),` from users, and the Privy SDK uses it to determine authentication status in your frontend.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Refresh token`})}),`\n`,_jsxs(_components.p,{children:[`Refresh tokens have a `,_jsx(_components.strong,{children:`30-day lifetime`}),` by default. Privy’s SDKs manage them automatically to obtain new access tokens and renew existing sessions.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If the Privy SDK detects any token tampering, it immediately invalidates the session and requires\nre-authentication. This destroys the corresponding session in Privy’s backend.`})}),`\n`,_jsx(Heading,{level:`2`,id:`session-security`,children:`Session security`}),`\n`,_jsxs(_components.p,{children:[`Our authentication system includes several security enhancements to protect user sessions. When using a verified domain, tokens can be stored in `,_jsx(_components.strong,{children:`HttpOnly cookies`}),` for enhanced protection against XSS attacks. All tokens are cryptographically signed and verified on both client and server.`]}),`\n`,_jsxs(_components.p,{children:[`The Privy SDK manages this complexity for you, handling token rotation, renewal, and invalidation automatically. Your backend can easily `,_jsx(_components.a,{href:`/authentication/user-authentication/access-tokens`,children:`validate authenticated requests`}),` using the provided access tokens.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Learn more about configuring secure authentication for your application in our `,_jsx(_components.a,{href:`/security/implementation-guide/security-checklist`,children:`security\nchecklist`}),`.`]})})]})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"User authentication","sidebarTitle":"User authentication","description":null,"href":"/security/authentication/user-authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Integrating with any OIDC/JWT-based authentication system","slug":"integrating-with-any-oidc/jwt-based-authentication-system","depth":2,"children":[]},{"title":"Integrating with Privy’s native authentication methods","slug":"integrating-with-privy’s-native-authentication-methods","depth":2,"children":[]},{"title":"Token architecture","slug":"token-architecture","depth":2,"children":[]},{"title":"Session security","slug":"session-security","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/privy-c2af3412/9a6cfa36ced76db0/welcome.js","/_mintlify/custom/privy-c2af3412/1af79d46bd64cd8b/fullstory.js","/_mintlify/custom/privy-c2af3412/e4d91321024fde21/recipes/recipes-search.js","/_mintlify/custom/privy-c2af3412/d31c5451398ab22c/check-links.js"],"subdomain":"privy-c2af3412","siteName":"Privy Docs","title":"User authentication - Privy Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T22:36:08.020Z","originalFileLocation":"security/authentication/user-authentication.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=\"Privy Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_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/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"User authentication - Privy Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Privy Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.privy.io/security/authentication/user-authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://assets.privy.io/docs-og.png\">\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=\"Privy Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://assets.privy.io/docs-og.png\">\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/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Privy Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#010110\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.privy.io/security/authentication/user-authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/security/authentication/user-authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.privy.io/#organization\",\"name\":\"Privy\",\"url\":\"https://www.privy.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://assets.privy.io/docs-og.png\"},\"sameAs\":[\"https://x.com/privy_io\",\"https://github.com/privy-io\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.privy.io#website\",\"name\":\"Privy Docs\",\"url\":\"https://docs.privy.io\",\"publisher\":{\"@id\":\"https://www.privy.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.privy.io/security/authentication/user-authentication#webpage\",\"url\":\"https://docs.privy.io/security/authentication/user-authentication\",\"name\":\"User authentication\",\"dateModified\":\"2026-11-06T22:36:08.020Z\",\"isPartOf\":{\"@id\":\"https://docs.privy.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.privy.io/security/authentication/user-authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.privy.io/security/authentication/user-authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Privy Docs\",\"item\":\"https://docs.privy.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User authentication\",\"item\":\"https://docs.privy.io/security/authentication/user-authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.privy.io/security/authentication/user-authentication#article\",\"headline\":\"User authentication\",\"name\":\"User authentication\",\"url\":\"https://docs.privy.io/security/authentication/user-authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.privy.io/security/authentication/user-authentication#webpage\"},\"image\":\"https://assets.privy.io/docs-og.png\",\"dateModified\":\"2026-11-06T22:36:08.020Z\",\"publisher\":{\"@id\":\"https://www.privy.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.privy.io#website\"}}]}\u003c/script>","siteName":"Privy Docs","nav":{"global":null,"tabs":[{"tab":"Basics","pages":[{"title":"Basics","href":"/basics/get-started/about"}]},{"tab":"Wallets","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/wallets/overview"}]},{"item":"Embedded wallets","pages":[{"title":"Embedded wallets","href":"/wallets/overview/embedded"}]},{"item":"Organization wallets","pages":[{"title":"Organization wallets","href":"/organizations/overview"}]},{"item":"External wallets","pages":[{"title":"External wallets","href":"/wallets/connectors/overview"}]},{"item":"Signatures and transactions","pages":[{"title":"Signatures and transactions","href":"/wallets/signatures-and-transactions"}]},{"item":"Balances and webhooks","pages":[{"title":"Balances and webhooks","href":"/wallets/gas-and-asset-management/assets/overview"}]},{"item":"Gas and fee management","pages":[{"title":"Gas and fee management","href":"/wallets/gas-and-asset-management/gas/overview"}]}],"pages":[{"title":"Wallets","href":"/wallets/overview"}]},{"tab":"Financial flows","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/financial-flows/overview"}]},{"item":"Deposits","pages":[{"title":"Deposits","href":"/financial-flows/deposits/overview"}]},{"item":"Payouts","pages":[{"title":"Payouts","href":"/financial-flows/payouts/overview"}]},{"item":"Earn","pages":[{"title":"Earn","href":"/wallets/actions/earn/overview"}]},{"item":"Cards","pages":[{"title":"Cards","href":"/financial-flows/cards/overview"}]},{"item":"Trade","pages":[{"title":"Trade","href":"/wallets/actions/swap/overview"}]},{"item":"Monetization","pages":[{"title":"Monetization","href":"/financial-flows/monetization"}]},{"item":"Treasury management","pages":[{"title":"Treasury management","href":"/treasury-management/overview"}]},{"item":"Private transactions","pages":[{"title":"Private transactions","href":"/financial-flows/private-transactions"}]}],"pages":[{"title":"Financial flows","href":"/financial-flows/overview"}]},{"tab":"Controls and policies","menu":[{"item":"Controls","pages":[{"title":"Controls","href":"/controls/overview"}]},{"item":"Policies","pages":[{"title":"Policies","href":"/controls/policies/overview"}]},{"item":"Manual approvals","pages":[{"title":"Manual approvals","href":"/controls/dashboard/overview"}]}],"pages":[{"title":"Controls and policies","href":"/controls/overview"}]},{"tab":"Identity","menu":[{"item":"Authentication","pages":[{"title":"Authentication","href":"/authentication/overview"}]},{"item":"Users","pages":[{"title":"Users","href":"/user-management/users/overview"}]},{"item":"KYC and KYB","pages":[{"title":"KYC and KYB","href":"/kyc-kyb/overview"}]}],"pages":[{"title":"Identity","href":"/authentication/overview"}]},{"tab":"Security","pages":[{"title":"Security","sidebarTitle":"Overview","href":"/security/overview"},{"group":"Wallet infrastructure","pages":[{"title":"Security architecture","sidebarTitle":"Architecture","href":"/security/wallet-infrastructure/architecture"},{"title":"Secure enclaves","sidebarTitle":"Secure enclaves","href":"/security/wallet-infrastructure/secure-enclaves"},{"title":"Wallet policies and controls","sidebarTitle":"Policy and controls","href":"/security/wallet-infrastructure/policy-and-controls"},{"group":"Advanced","pages":[{"title":"On device execution environment","sidebarTitle":"On device","description":null,"href":"/security/wallet-infrastructure/advanced/user-device"}]}]},{"group":"Authentication","pages":[{"title":"User authentication","sidebarTitle":"User authentication","href":"/security/authentication/user-authentication"},{"title":"User authorization keys","sidebarTitle":"User authorization keys","description":null,"href":"/security/authentication/authenticated-signers"}]},{"group":"Implementation guide","pages":[{"title":"Security checklist","sidebarTitle":"Security checklist","href":"/security/implementation-guide/security-checklist"},{"title":"Guidance for content security policies (CSPs)","sidebarTitle":"Content security policies (CSPs)","href":"/security/implementation-guide/content-security-policy"},{"title":"IP allowlist","sidebarTitle":"IP allowlist","href":"/security/implementation-guide/ip-allowlist"},{"title":"Activity logs","href":"/security/implementation-guide/activity-logs"}]},{"title":"Threat models \u0026 security FAQ","sidebarTitle":"Security FAQs","href":"/security/security-faqs"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"User authentication - Privy Docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}