Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.
This guide demonstrates how to use the Hanko FIDO UAF Client and the Hanko API to perform on-device authentication.
Unlike using the Hanko Authenticator, this scenario does not involve out-of-band communication. Instead of initiating
communication on a desktop through a browser and confirming authentication in response to out-of-band
notifications on a mobile device, all communication originates from the mobile device and runs through an application
backend which passes information to the Hanko API. In this guide you will learn how to
In order to make HTTP requests the relying party backend can proxy to the Hanko API, you need
a suitable HTTP client library (e.g. OkHttp for Android, Alamofire for iOS).
Client availability across appsThe FIDO UAF Client is only available for your app. You can make it publicly available for all apps on the device.
Add the following to your AndroidManifest.xml:
Face ID usageFidoUafClientiOS uses FaceID, so you must define NSFaceIDUsageDescription in your Info.plist.Operation promptsThe FidoUafClientiOS uses default values to display kSecUseOperationPrompt when using the private keys.
The default values are localized to English and German.
To override the default values just add the keys biomentryOperationPromptReg and biomentryOperationPromptAuth to your project’s Localizable.strings.
If a request contains a transaction, the biomentryOperationPromptAuth will be overridden with the transaction content.
Operation promptsTo customize the strings which are displayed during registration and authentication, define the following strings in
your strings .xml file:
<resources> <string name="uafclient_biometric_prompt_title_reg">Register</string> <string name="uafclient_biometric_prompt_title_auth">Authenticate</string> <string name="uafclient_biometric_prompt_description_reg">Authenticate to create a key</string> <string name="uafclient_biometric_prompt_description_auth">Authenticate to use a key</string> <string name="uafclient_account_chooser_title">Choose your key</string></resources>
Operation promptsThe FidoUafClientiOS uses default values to display kSecUseOperationPrompt when using the private keys. The default
values are localized to English and German. To override the default values just add the keys biomentryOperationPromptReg
and biomentryOperationPromptAuth to your project’s Localizable.strings.Note: If a request contains a transaction the biomentryOperationPromptAuth will be overridden with the transaction
content.
You need access to the Hanko Authentication API, which is currently not publicly available. To request test access,
please contact us at info@hanko.io.
{"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/quickstart/uaf-client","slug":"/hanko-authenticator/quickstart/uaf-client","pageMetadata":{"sidebarTitle":"Overview","title":"Getting started with the Hanko FIDO UAF Client","description":"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.","href":"/hanko-authenticator/quickstart/uaf-client"},"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: \"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Tab,Tabs,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This guide demonstrates how to use the Hanko FIDO UAF Client and the Hanko API to perform `,_jsx(_components.strong,{children:`on-device`}),` authentication.\nUnlike using the Hanko Authenticator, this scenario does not involve out-of-band communication. Instead of initiating\ncommunication on a desktop through a browser and confirming authentication in response to out-of-band\nnotifications on a mobile device, `,_jsx(_components.em,{children:`all`}),` communication originates from the mobile device and runs through an application\nbackend which passes information to the Hanko API. In this guide you will learn how to`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/hanko-authenticator/quickstart/uaf-client-registration`,children:_jsx(_components.strong,{children:`REGISTER`})}),` a device`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/hanko-authenticator/quickstart/uaf-client-authentication`,children:_jsx(_components.strong,{children:`AUTHENTICATE`})}),` with a registered device`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/hanko-authenticator/quickstart/uaf-client-transactions`,children:_jsx(_components.strong,{children:`CONFIRM TRANSACTIONS`})}),` with a device`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/hanko-authenticator/quickstart/uaf-client-de-registration`,children:_jsx(_components.strong,{children:`DEREGISTER`})}),` a device`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`using the Hanko FIDO UAF Client.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(Heading,{level:`3`,id:`add-the-hanko-fido-uaf-client-as-a-project-dependency`,children:`Add the Hanko FIDO UAF Client as a project dependency`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Android`,id:`android`,children:[_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`min. android SDK version: 23`}),`\n`,_jsx(_components.li,{children:`a secure keyguard (biometrics, pin, pattern, etc.)`}),`\n`]}),_jsxs(_components.p,{children:[`To add the Hanko FIDO UAF Client to your Android project, add the following line to your `,_jsx(_components.code,{children:`build.gradle`}),`:`]}),_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`implementation 'io.hanko:fidouafclient:\u003clatest-version>'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`\u003clatest-version>`}),` with the latest version. The latest version can be found `,_jsx(_components.a,{href:`https://github.com/teamhanko/fidouafclient/tags`,children:`here`}),`.`]})})]}),_jsxs(Tab,{title:`iOS`,id:`ios`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Using Carthage`}),`:`]}),_jsx(_components.p,{children:`To integrate FidoUafClientiOS into your Xcode project using Carthage, specify it in your Cartfile:`}),_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`github 'teamhanko/fidouafclientiOS' == '\u003clatest-version>'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Using CocoaPods`}),`:`]}),_jsx(_components.p,{children:`To integrate FidoUafClientiOS into your project using CocoaPods, specify it in your Podfile:`}),_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`pod 'FidoUafClientiOS', \u003clatest-version>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`\u003clatest-version>`}),` with the latest version. The latest version can be found `,_jsx(_components.a,{href:`https://github.com/teamhanko/fidouafclientiOS/tags`,children:`here`}),`.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`http-client-library`,children:`HTTP client library`}),`\n`,_jsxs(_components.p,{children:[`In order to make HTTP requests the relying party backend can proxy to the Hanko API, you need\na suitable HTTP client library (e.g. `,_jsx(_components.a,{href:`https://github.com/square/okhttp`,children:`OkHttp`}),` for Android, `,_jsx(_components.a,{href:`https://github.com/Alamofire/Alamofire`,children:`Alamofire`}),` for iOS).`]}),`\n`,_jsx(Heading,{level:`3`,id:`hanko-server-side-sdk`,children:`Hanko server-side SDK`}),`\n`,_jsx(_components.p,{children:`To forward HTTP requests to the Hanko API you can use one of our server-side SDKs in your backend application.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Backend SDK examples for this step will be added once official server SDKs are available.`})}),`\n`,_jsx(Heading,{level:`3`,id:`configuration`,children:`Configuration`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Android`,id:`android-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Client availability across apps`})}),_jsxs(_components.p,{children:[`The FIDO UAF Client is only available for your app. You can make it publicly available for all apps on the device.\nAdd the following to your `,_jsx(_components.code,{children:`AndroidManifest.xml`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`activity`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` android:name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"io.hanko.fidouafclient.FidoUafClient\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`intent-filter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`action`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` android:name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"org.fidoalliance.intent.FIDO_OPERATION\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`data`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` android:mimeType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"application/fido.uaf_client+json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`category`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` android:name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"android.intent.category.DEFAULT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`intent-filter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`activity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`iOS`,id:`ios-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Face ID usage`})}),_jsxs(_components.p,{children:[`FidoUafClientiOS uses FaceID, so you must define `,_jsx(_components.code,{children:`NSFaceIDUsageDescription`}),` in your `,_jsx(_components.code,{children:`Info.plist`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Operation prompts`})}),_jsxs(_components.p,{children:[`The FidoUafClientiOS uses default values to display `,_jsx(_components.code,{children:`kSecUseOperationPrompt`}),` when using the private keys.\nThe default values are localized to English and German.\nTo override the default values just add the keys `,_jsx(_components.code,{children:`biomentryOperationPromptReg`}),` and `,_jsx(_components.code,{children:`biomentryOperationPromptAuth`}),` to your project’s `,_jsx(_components.code,{children:`Localizable.strings`}),`.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`If a request contains a transaction, the `,_jsx(_components.code,{children:`biomentryOperationPromptAuth`}),` will be overridden with the transaction content.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`customization`,children:`Customization`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Android`,id:`android-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Operation prompts`})}),_jsxs(_components.p,{children:[`To customize the strings which are displayed during registration and authentication, define the following strings in\nyour strings `,_jsx(_components.code,{children:`.xml`}),` file:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`resources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uafclient_biometric_prompt_title_reg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Register`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uafclient_biometric_prompt_title_auth\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Authenticate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uafclient_biometric_prompt_description_reg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Authenticate to create a key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uafclient_biometric_prompt_description_auth\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Authenticate to use a key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uafclient_account_chooser_title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Choose your key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`resources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`iOS`,id:`ios-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Operation prompts`})}),_jsxs(_components.p,{children:[`The FidoUafClientiOS uses default values to display kSecUseOperationPrompt when using the private keys. The default\nvalues are localized to English and German. To override the default values just add the keys `,_jsx(_components.code,{children:`biomentryOperationPromptReg`}),`\nand `,_jsx(_components.code,{children:`biomentryOperationPromptAuth`}),` to your project’s `,_jsx(_components.code,{children:`Localizable.strings`}),`.`]}),_jsxs(_components.p,{children:[`Note: If a request contains a transaction the `,_jsx(_components.code,{children:`biomentryOperationPromptAuth`}),` will be overridden with the transaction\ncontent.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`obtain-an-api-key`,children:`Obtain an API Key`}),`\n`,_jsxs(_components.p,{children:[`You need access to the Hanko Authentication API, which is currently not publicly available. To request test access,\nplease contact us at `,_jsx(_components.a,{href:`mailto:info@hanko.io`,children:`info@hanko.io`}),`.`]})]})}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":"Overview","title":"Getting started with the Hanko FIDO UAF Client","description":"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.","href":"/hanko-authenticator/quickstart/uaf-client"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[{"title":"Add the Hanko FIDO UAF Client as a project dependency","slug":"add-the-hanko-fido-uaf-client-as-a-project-dependency","depth":3,"children":[]},{"title":"HTTP client library","slug":"http-client-library","depth":3,"children":[]},{"title":"Hanko server-side SDK","slug":"hanko-server-side-sdk","depth":3,"children":[]},{"title":"Configuration","slug":"configuration","depth":3,"children":[]},{"title":"Customization","slug":"customization","depth":3,"children":[]}]},{"title":"Obtain an API Key","slug":"obtain-an-api-key","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hanko","siteName":"Hanko","title":"Getting started with the Hanko FIDO UAF Client - Hanko","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T14:44:59.907Z","originalFileLocation":"hanko-authenticator/quickstart/uaf-client.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=\"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\">\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=\"Getting started with the Hanko FIDO UAF Client - Hanko\">\u003cmeta data-mint-head property=\"og:description\" content=\"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hanko\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client\">\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=FIDO+UAF+Client+SDK\u0026amp;title=Getting+started+with+the+Hanko+FIDO+UAF+Client\u0026amp;description=Prerequisites+and+setup+for+integrating+the+Hanko+FIDO+UAF+Client+into+your+native+Android+or+iOS+app.\u0026amp;theme=0019bde39b8e96d0b6d738b4\u0026amp;signature=0f0ef56d33531a3e523e03df6e92059ed5ee1b420fb06566e803528879d316ab\">\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=\"Getting started with the Hanko FIDO UAF Client - Hanko\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hanko.mintlify.app/_mintlify/api/og/v2?division=FIDO+UAF+Client+SDK\u0026amp;title=Getting+started+with+the+Hanko+FIDO+UAF+Client\u0026amp;description=Prerequisites+and+setup+for+integrating+the+Hanko+FIDO+UAF+Client+into+your+native+Android+or+iOS+app.\u0026amp;theme=0019bde39b8e96d0b6d738b4\u0026amp;signature=0f0ef56d33531a3e523e03df6e92059ed5ee1b420fb06566e803528879d316ab\">\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/quickstart/uaf-client\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/hanko-authenticator/quickstart/uaf-client.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/quickstart/uaf-client#webpage\",\"url\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client\",\"name\":\"Getting started with the Hanko FIDO UAF Client\",\"description\":\"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\",\"dateModified\":\"2026-10-09T14:44:59.907Z\",\"isPartOf\":{\"@id\":\"https://docs.hanko.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Quickstarts\",\"item\":\"https://docs.hanko.io/hanko-authenticator/quickstart/authenticator-app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started with the Hanko FIDO UAF Client\",\"item\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client#article\",\"headline\":\"Getting started with the Hanko FIDO UAF Client\",\"name\":\"Getting started with the Hanko FIDO UAF Client\",\"description\":\"Prerequisites and setup for integrating the Hanko FIDO UAF Client into your native Android or iOS app.\",\"url\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hanko.io/hanko-authenticator/quickstart/uaf-client#webpage\"},\"dateModified\":\"2026-10-09T14:44:59.907Z\",\"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","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?","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","description":"How to de-register one, several, or all Hanko Authenticator devices for a user through the Hanko API.","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","description":"Register an authenticator device on-device using the Hanko FIDO UAF Client and the Hanko API.","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":"Getting started with the Hanko FIDO UAF Client - Hanko","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}