To confirm a sign-in or a second-factor prompt, your users need a device that can sign the request — an authenticator. Typically that’s their own smartphone, but it could also be a computer or a second-factor device like a USB security key.To make this easy to roll out, Hanko offers production-ready, white-label authenticator apps for Android and iOS that plug into your application. By simply touching the device’s fingerprint sensor or using facial recognition, your users get a fast, secure second factor without typing OTP codes or waiting for SMS. Read more about the Hanko Authenticator apps or start with the getting started guide.
The unbranded/Hanko-branded Android app is currently not available on the Google Play store. Contact us for an APK download link.
If you’d rather build MFA directly into your existing native app instead of relying on a separate authenticator app, Hanko offers a mobile client SDK for both Android and iOS. Read more in the SDKs section.If you use Keycloak as your identity and access management solution — for example after migrating off Entra ID or Okta — you can add the Hanko Authenticator as a login option through the Keycloak plugin.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hanko","description":"Documentation for Hanko’s open-source authentication products. Build secure authentication with passkeys, passwords, MFA, social login, SSO, and push authentication.","colors":{"primary":"#6575FF","light":"#6575FF","dark":"#0D001D"},"logo":{"light":"https://mintcdn.com/hanko/cvvCniGfSDqJRest/logo/light.svg?fit=max\u0026auto=format\u0026n=cvvCniGfSDqJRest\u0026q=85\u0026s=c11abcf43f80ac4a882d948d9a697da6","dark":"https://mintcdn.com/hanko/cvvCniGfSDqJRest/logo/dark.svg?fit=max\u0026auto=format\u0026n=cvvCniGfSDqJRest\u0026q=85\u0026s=2cbd45a5f965459329fa577fe505b871"},"favicon":"https://mintcdn.com/hanko/nDll7gWf2olRVk-k/favicon.png?fit=max\u0026auto=format\u0026n=nDll7gWf2olRVk-k\u0026q=85\u0026s=0220747b414c9c1af17f71869d87269a","api":{"playground":{"display":"interactive"}},"background":{"image":"https://mintcdn.com/hanko/nDll7gWf2olRVk-k/images/background.png?fit=max\u0026auto=format\u0026n=nDll7gWf2olRVk-k\u0026q=85\u0026s=cb6d5948c52e06bab12e957123881b4b","decoration":"gradient","color":{"dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.gg/tAG6RrRqJD","label":"Discord"}],"primary":{"type":"button","label":"Hanko Cloud Console","href":"https://cloud.hanko.io"}},"footer":{"socials":{"x":"https://x.com/hanko_io","github":"https://github.com/teamhanko","linkedin":"https://www.linkedin.com/company/teamhanko"}},"fonts":{"family":"Geist"},"icons":{"library":"fontawesome"},"integrations":{"plausible":{"domain":"docs.hanko.io"}},"errors":{"404":{"redirect":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"thumbnails":{"fonts":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hanko","hasAudioNarration":false,"actualSubdomain":"hanko","customDomains":["docs.hanko.io"],"gitSource":{"type":"github","owner":"teamhanko","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae130142e7b9f2a4eb1451d","collectionId":"e51a69b0-9d1a-4cbb-828c-c20cc6c4b68c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae130142e7b9f2a4eb1451d"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{},"buildId":"6ae130142e7b9f2a4eb1451d","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Hanko Docs","count":127},{"language":"default","tag":"Resources","count":68},{"language":"default","tag":"API reference","count":64},{"language":"default","tag":"Admin","count":49},{"language":"default","tag":"Guides","count":41},{"language":"default","tag":"Hanko Authenticator Docs","count":28},{"language":"default","tag":"Getting started","count":27},{"language":"default","tag":"Quickstarts","count":26},{"language":"default","tag":"Passkey API Docs","count":24},{"language":"default","tag":"API Reference","count":22}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@hanko.io"}},"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":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"hanko-authenticator/core-components","slug":"/hanko-authenticator/core-components","pageMetadata":{"sidebarTitle":"Core components","title":"Core components","description":"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.","href":"/hanko-authenticator/core-components"},"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: \"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\"\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`,p:`p`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`hanko-authenticator-apps`,children:`Hanko Authenticator apps`}),`\n`,_jsx(_components.p,{children:`To confirm a sign-in or a second-factor prompt, your users need a device that can sign the request — an authenticator. Typically that’s their own smartphone, but it could also be a computer or a second-factor device like a USB security key.`}),`\n`,_jsxs(_components.p,{children:[`To make this easy to roll out, Hanko offers production-ready, white-label authenticator apps for Android and iOS that plug into your application. By simply touching the device’s fingerprint sensor or using facial recognition, your users get a fast, secure second factor without typing OTP codes or waiting for SMS. Read more about the `,_jsx(_components.a,{href:`/hanko-authenticator/guides/authenticator-apps`,children:`Hanko Authenticator apps`}),` or start with the `,_jsx(_components.a,{href:`/hanko-authenticator/quickstart/authenticator-app`,children:`getting started guide`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`The unbranded/Hanko-branded Android app is currently not available on the Google Play store. Contact us for an APK download link.`})}),`\n`,_jsx(`a`,{href:`https://itunes.apple.com/us/app/hanko-authenticator/id1435048235?mt=8`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=f49cfcd12ff359430483ff24b0613efe`,alt:`Download on the App Store`,style:{height:`53px`},\"data-og-width\":`504`,width:`504`,\"data-og-height\":`168`,height:`168`,\"data-path\":`images/hanko-authenticator/badges/ios-badge-en.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=280\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=32eb368ee0ae24c654d6a4f917cbdc01 280w, https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=560\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=bf0145440e7da6df75f4af16e4cf8486 560w, https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=840\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=32435e692ca94fc265725f934ff3b25a 840w, https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=1100\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=8204ee509a368b65457a297c25eebd8d 1100w, https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=1650\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=dbd866e0697d4016165480e449975cea 1650w, https://mintcdn.com/hanko/DAs0LNceUiIaZd6m/images/hanko-authenticator/badges/ios-badge-en.png?w=2500\u0026fit=max\u0026auto=format\u0026n=DAs0LNceUiIaZd6m\u0026q=85\u0026s=feb95dc3ae8b86be71b0d9badb4fe98f 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`on-device-sdks-\u0026-plugins`,children:`On-device SDKs \u0026 plugins`}),`\n`,_jsxs(_components.p,{children:[`If you’d rather build MFA directly into your existing native app instead of relying on a separate authenticator app, Hanko offers a mobile client SDK for both Android and iOS. Read more in the `,_jsx(_components.a,{href:`/hanko-authenticator/sdks/android`,children:`SDKs section`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If you use Keycloak as your identity and access management solution — for example after migrating off Entra ID or Okta — you can add the Hanko Authenticator as a login option through the `,_jsx(_components.a,{href:`/hanko-authenticator/sdks/keycloak-plugin`,children:`Keycloak plugin`}),`.`]})]})}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":{"sidebarTitle":"Core components","title":"Core components","description":"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.","href":"/hanko-authenticator/core-components"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Hanko Authenticator apps","slug":"hanko-authenticator-apps","depth":2,"children":[]},{"title":"On-device SDKs \u0026 plugins","slug":"on-device-sdks-\u0026-plugins","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hanko","siteName":"Hanko","title":"Core components - Hanko","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-22T14:36:26.902Z","originalFileLocation":"hanko-authenticator/core-components.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hanko\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_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/hanko/E70FYFIuCUxDugor/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Core components - Hanko\">\u003cmeta data-mint-head property=\"og:description\" content=\"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hanko\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hanko.io/hanko-authenticator/core-components\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hanko.mintlify.app/_mintlify/api/og/v2?division=Getting+started\u0026amp;title=Core+components\u0026amp;description=The+core+components+that+make+up+the+Hanko+Authenticator%2C+a+self-hostable+MFA+and+push+authentication+solution.\u0026amp;theme=0019bde39b8e96d0b6d738b4\u0026amp;signature=88a8f80de824f317f9756bf34e7a2c1d62fb324390bac7e67bf0b8f66524380c\">\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=\"Core components - Hanko\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hanko.mintlify.app/_mintlify/api/og/v2?division=Getting+started\u0026amp;title=Core+components\u0026amp;description=The+core+components+that+make+up+the+Hanko+Authenticator%2C+a+self-hostable+MFA+and+push+authentication+solution.\u0026amp;theme=0019bde39b8e96d0b6d738b4\u0026amp;signature=88a8f80de824f317f9756bf34e7a2c1d62fb324390bac7e67bf0b8f66524380c\">\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/hanko/E70FYFIuCUxDugor/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hanko\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6575FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hanko.io/hanko-authenticator/core-components\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/hanko-authenticator/core-components.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hanko.io/#organization\",\"name\":\"Hanko\",\"url\":\"https://docs.hanko.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hanko/cvvCniGfSDqJRest/logo/light.svg?fit=max\u0026auto=format\u0026n=cvvCniGfSDqJRest\u0026q=85\u0026s=c11abcf43f80ac4a882d948d9a697da6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hanko.io#website\",\"name\":\"Hanko\",\"url\":\"https://docs.hanko.io\",\"publisher\":{\"@id\":\"https://docs.hanko.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hanko.io/hanko-authenticator/core-components#webpage\",\"url\":\"https://docs.hanko.io/hanko-authenticator/core-components\",\"name\":\"Core components\",\"description\":\"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\",\"dateModified\":\"2026-07-22T14:36:26.902Z\",\"isPartOf\":{\"@id\":\"https://docs.hanko.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hanko.io/hanko-authenticator/core-components#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hanko.io/hanko-authenticator/core-components#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Getting started\",\"item\":\"https://docs.hanko.io/hanko-authenticator/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Core components\",\"item\":\"https://docs.hanko.io/hanko-authenticator/core-components\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hanko.io/hanko-authenticator/core-components#article\",\"headline\":\"Core components\",\"name\":\"Core components\",\"description\":\"The core components that make up the Hanko Authenticator, a self-hostable MFA and push authentication solution.\",\"url\":\"https://docs.hanko.io/hanko-authenticator/core-components\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hanko.io/hanko-authenticator/core-components#webpage\"},\"dateModified\":\"2026-07-22T14:36:26.902Z\",\"publisher\":{\"@id\":\"https://docs.hanko.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hanko.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hanko\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hanko","nav":{"global":null,"tabs":[{"tab":"Hanko Docs","pages":[{"title":"Hanko Docs","href":"/introduction"}]},{"tab":"Passkey API Docs","pages":[{"title":"Passkey API Docs","href":"/passkey-api/introduction"}]},{"tab":"Hanko Authenticator Docs","groups":[{"group":"Getting started","pages":[{"sidebarTitle":"Introduction","title":"Introduction to Hanko Authenticator","description":"A self-hostable push authentication app and API for adding MFA, second-factor, and passwordless login to your application.","mode":"wide","href":"/hanko-authenticator/introduction"},{"sidebarTitle":"Core components","title":"Core components","href":"/hanko-authenticator/core-components"},{"sidebarTitle":"What is FIDO UAF?","title":"What is FIDO UAF?","description":"Background reading on the FIDO Universal Authentication Framework (UAF) protocol that the Hanko Authenticator is built on.","href":"/hanko-authenticator/what-is-fido-uaf"}]},{"group":"Quickstarts","pages":[{"group":"Hanko Authenticator App","pages":[{"sidebarTitle":"Overview","title":"Getting started with Hanko Authenticator","href":"/hanko-authenticator/quickstart/authenticator-app"},{"sidebarTitle":"Registration","title":"Register a device using the Hanko Authenticator","href":"/hanko-authenticator/quickstart/authenticator-app-registration"},{"sidebarTitle":"Authentication","title":"Authenticate with a device using Hanko Authenticator","href":"/hanko-authenticator/quickstart/authenticator-app-authentication"},{"sidebarTitle":"Transactions","title":"Confirm transactions using Hanko Authenticator","href":"/hanko-authenticator/quickstart/authenticator-app-transactions"},{"sidebarTitle":"De-registration","title":"De-register a device","href":"/hanko-authenticator/quickstart/authenticator-app-de-registration"}]},{"group":"FIDO UAF Client SDK","pages":[{"sidebarTitle":"Overview","title":"Getting started with the Hanko FIDO UAF Client","href":"/hanko-authenticator/quickstart/uaf-client"},{"sidebarTitle":"Registration","title":"Register a device with the Hanko FIDO UAF Client","href":"/hanko-authenticator/quickstart/uaf-client-registration"},{"sidebarTitle":"Authentication","title":"Authenticate with a device using the Hanko FIDO UAF Client","href":"/hanko-authenticator/quickstart/uaf-client-authentication"},{"sidebarTitle":"Transactions","title":"Confirm transactions using the Hanko FIDO UAF Client","href":"/hanko-authenticator/quickstart/uaf-client-transactions"},{"sidebarTitle":"De-registration","title":"De-register a device using the Hanko FIDO UAF Client","href":"/hanko-authenticator/quickstart/uaf-client-de-registration"}]}]},{"group":"Guides","pages":[{"sidebarTitle":"Integration overview","title":"Integration guide","href":"/hanko-authenticator/guides/integration-overview"},{"sidebarTitle":"Registration screen","title":"Modifying your registration flow","href":"/hanko-authenticator/guides/registration-screen"},{"sidebarTitle":"Login screen","title":"Modifying your login flow","href":"/hanko-authenticator/guides/login-screen"},{"sidebarTitle":"Recovery","title":"Recovery techniques","href":"/hanko-authenticator/guides/recovery"},{"sidebarTitle":"Authenticator apps","title":"Hanko Authenticator apps","href":"/hanko-authenticator/guides/authenticator-apps"}]},{"group":"SDKs \u0026 Plugins","pages":[{"sidebarTitle":"Android","title":"FIDO UAF Client for Android","href":"/hanko-authenticator/sdks/android"},{"sidebarTitle":"iOS","title":"FIDO UAF Client for iOS","href":"/hanko-authenticator/sdks/ios"},{"sidebarTitle":"Keycloak plugin","title":"Hanko Keycloak plugin","href":"/hanko-authenticator/sdks/keycloak-plugin"}]},{"group":"API Reference","pages":[{"group":"Hanko Authenticator","pages":[{"openapi":"openapi-authenticator post /v1/uaf/requests","title":"Create a request for the Hanko Authenticator","href":"/hanko-authenticator/reference/create-a-request"},{"openapi":"openapi-authenticator get /v1/uaf/requests/{id}","title":"Get the request for the Hanko Authenticator","href":"/hanko-authenticator/reference/get-a-request"},{"openapi":"openapi-authenticator delete /v1/uaf/requests/{id}","title":"Cancel the request for the Hanko Authenticator","href":"/hanko-authenticator/reference/cancel-a-request"},{"openapi":"openapi-authenticator put /v1/uaf/requests/{id}","title":"Validate the request as retrieved from the Hanko Authenticator","href":"/hanko-authenticator/reference/validate-a-request"},{"openapi":"openapi-authenticator get /v1/uaf/requests/{id}/qrcode","title":"Get the QR code for a given Hanko Authenticator request","href":"/hanko-authenticator/reference/get-a-qr-code"}]},{"group":"Device Management","pages":[{"openapi":"openapi-authenticator get /mgmt/v1/registrations/{userId}","title":"Get all devices of a user","href":"/hanko-authenticator/reference/get-a-users-devices"},{"openapi":"openapi-authenticator post /mgmt/v1/registrations/rename/{deviceId}","title":"Change the name of a authentication device","href":"/hanko-authenticator/reference/rename-a-device"}]}]}]}]},"title":"Core components - Hanko","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CVZVK4hN.js","lightbox-handle-r17bVUz3.js"]}