Passkeys for Kotlin mobile apps¶
Build standards-first registration and sign-in for Android, iOS, and Compose Multiplatform, backed by authoritative verification on a JVM/Ktor server.
One shared Kotlin ceremony flow, platform-native passkey prompts, and a server boundary that remains responsible for challenges, origins, signatures, account binding, and replay prevention.
Start with mobile¶
Compose Multiplatform¶
Share orchestration and UI while keeping platform prompt lifecycles explicit. Start the Compose path →
Android¶
Integrate Credential Manager, Digital Asset Links, and provider-backed device tests. Read the Android guide →
iOS¶
Bridge Authentication Services, Associated Domains, and the presentation anchor. Read the iOS guide →
Mobile + backend¶
Run registration and authentication across the included app and Ktor service. Run the full stack →
The shortest production-shaped path¶
flowchart LR
UI[Mobile UI] --> Flow[PasskeyFlow]
Flow --> API[Ktor backend contract]
API --> Service[Registration or authentication service]
Service --> Store[(Credential and ceremony stores)]
Flow --> Prompt[Android or iOS platform prompt]
Prompt --> Flow
- Add the shared flow and transport artifacts, plus platform defaults.
- Construct the platform client at the host lifecycle boundary.
- Call the backend start endpoint, show the platform prompt, then send the response to the finish endpoint.
- Configure Android Digital Asset Links and iOS Associated Domains for the production RP ID.
- Verify both happy paths and failure paths on real provider-backed devices.
The latest stable coordinated release is v0.4.0. All published artifacts use the io.github.szijpeter group.
Project maturity
The API is evolving. Pin a release, read the changelog, and treat compatibility statements as release-specific.
Start where you are¶
| You are building… | Start here | Then verify |
|---|---|---|
| Compose Multiplatform app | Mobile quickstart | Compose lifecycle |
| Android app | Android integration | Digital Asset Links and provider-backed device behavior |
| iOS app | iOS integration | Associated Domains, presentation anchor, and physical-device behavior |
| Mobile app plus backend | Full sample | Registration and authentication end to end |
| Existing JVM service | Ktor quickstart | Ceremony state, replay protection, and trusted origins |
| Custom protocol stack | Artifact catalog | Every replaced default and its security ownership |