
Standards-first WebAuthn and passkey building blocks: typed protocol models, strict validation, backend ceremony services, client orchestration, and modular transport, storage, crypto and attestation adapters.
Standards-first Kotlin Multiplatform building blocks for WebAuthn and passkey integrations.
This project helps teams implement passwordless login without rebuilding the hardest parts from scratch. It gives you typed protocol models, strict validation, backend ceremony services, platform passkey clients, and optional transport/adaptation modules that stay close to the WebAuthn specification.
This repo focuses on those needs:
A typical WebAuthn flow has two ceremony pairs:
Each pair has a server start step and a client finish step.
This repo maps cleanly onto that split:
webauthn-model, webauthn-serialization-kotlinx, webauthn-core, webauthn-crypto-api: shared protocol and validation building blocks.webauthn-server-*: JVM backend services, crypto, Ktor routing, and storage adapters.webauthn-client-*: shared client orchestration plus Android/iOS platform bridges.webauthn-network-ktor-client: default client transport for /webauthn/* style backend contracts.platform:bom: aligned dependency coordinates for the published public surface.The coordinated release train uses one version for the full published surface plus a BOM.
repositories {
google()
mavenCentral()
}
dependencies {
implementation(platform("io.github.szijpeter:webauthn-bom:<version>"))
implementation("io.github.szijpeter:webauthn-server-core-jvm")
implementation("io.github.szijpeter:webauthn-server-jvm-crypto")
implementation("io.github.szijpeter:webauthn-client-core")
implementation("io.github.szijpeter:webauthn-client-android")
}Published to Maven Central (first public release: 0.1.0). Maintainers can still validate publication locally with:
./gradlew publishToMavenLocal --stacktraceUse:
webauthn-modelwebauthn-corewebauthn-crypto-apiwebauthn-server-jvm-cryptowebauthn-server-core-jvmwebauthn-server-ktor if you want route adapterswebauthn-server-store-exposed if you want an Exposed-backed store implementationUse:
webauthn-client-corewebauthn-client-json-core if you exchange raw JSON with a host/backendwebauthn-client-androidwebauthn-client-ioswebauthn-client-compose for Compose helperswebauthn-client-prf-crypto for PRF-based key derivation and encryption helperswebauthn-network-ktor-client for the default backend contractStart with:
| Module | Who it is for |
|---|---|
platform:bom |
Consumers who want aligned versions across published artifacts |
webauthn-model |
Teams that want typed WebAuthn models and value wrappers |
webauthn-serialization-kotlinx |
Teams mapping JSON/CBOR DTOs to typed models |
webauthn-core |
Teams validating ceremonies and authenticator data |
webauthn-crypto-api |
Teams plugging crypto/attestation implementations into validation and server flows |
webauthn-server-jvm-crypto |
JVM backends that want Signum-first hashing, signature, and attestation verification |
webauthn-server-core-jvm |
JVM backends that need registration/authentication ceremony services |
webauthn-server-ktor |
Ktor backends that want ready-made WebAuthn routes |
webauthn-server-store-exposed |
JVM backends storing WebAuthn state through Exposed |
webauthn-client-core |
Shared passkey orchestration and controller-driven flows |
webauthn-client-json-core |
Apps or SDKs that need raw JSON interoperability on top of typed clients |
webauthn-client-compose |
Compose apps that want remembered client/controller helpers |
webauthn-client-android |
Android apps using Credential Manager |
webauthn-client-ios |
iOS apps using AuthenticationServices |
webauthn-client-prf-crypto |
Client apps deriving crypto sessions from WebAuthn PRF extension outputs |
webauthn-network-ktor-client |
Clients talking to a /webauthn/* backend contract over Ktor |
webauthn-attestation-mds |
Backends that want optional FIDO Metadata Service trust anchors |
This repository is publicly released and still pre-1.0.
Current state:
kotlinx-serialization remains pinned to 1.9.0 while the current Signum compatibility issue is unresolved.SECURITY.md.docs/PUBLIC_LAUNCH_CHECKLIST.md.docs/MAVEN_CENTRAL.md.Renovate.tools/agent/setup-hooks.sh
tools/agent/quality-gate.sh --mode fast --scope changed --block false
tools/agent/quality-gate.sh --mode strict --scope changed --block false
./gradlew apiCheck --stacktrace
./gradlew publishToMavenLocal --stacktracedocs/CLIENT_FIRST_EXECUTION.mddocs/CLIENT_API_BENCHMARKS.mddocs/IMPLEMENTATION_STATUS.mddocs/ROADMAP.mddocs/ai/STEERING.mdLicense: Apache-2.0. See LICENSE.
Standards-first Kotlin Multiplatform building blocks for WebAuthn and passkey integrations.
This project helps teams implement passwordless login without rebuilding the hardest parts from scratch. It gives you typed protocol models, strict validation, backend ceremony services, platform passkey clients, and optional transport/adaptation modules that stay close to the WebAuthn specification.
This repo focuses on those needs:
A typical WebAuthn flow has two ceremony pairs:
Each pair has a server start step and a client finish step.
This repo maps cleanly onto that split:
webauthn-model, webauthn-serialization-kotlinx, webauthn-core, webauthn-crypto-api: shared protocol and validation building blocks.webauthn-server-*: JVM backend services, crypto, Ktor routing, and storage adapters.webauthn-client-*: shared client orchestration plus Android/iOS platform bridges.webauthn-network-ktor-client: default client transport for /webauthn/* style backend contracts.platform:bom: aligned dependency coordinates for the published public surface.The coordinated release train uses one version for the full published surface plus a BOM.
repositories {
google()
mavenCentral()
}
dependencies {
implementation(platform("io.github.szijpeter:webauthn-bom:<version>"))
implementation("io.github.szijpeter:webauthn-server-core-jvm")
implementation("io.github.szijpeter:webauthn-server-jvm-crypto")
implementation("io.github.szijpeter:webauthn-client-core")
implementation("io.github.szijpeter:webauthn-client-android")
}Published to Maven Central (first public release: 0.1.0). Maintainers can still validate publication locally with:
./gradlew publishToMavenLocal --stacktraceUse:
webauthn-modelwebauthn-corewebauthn-crypto-apiwebauthn-server-jvm-cryptowebauthn-server-core-jvmwebauthn-server-ktor if you want route adapterswebauthn-server-store-exposed if you want an Exposed-backed store implementationUse:
webauthn-client-corewebauthn-client-json-core if you exchange raw JSON with a host/backendwebauthn-client-androidwebauthn-client-ioswebauthn-client-compose for Compose helperswebauthn-client-prf-crypto for PRF-based key derivation and encryption helperswebauthn-network-ktor-client for the default backend contractStart with:
| Module | Who it is for |
|---|---|
platform:bom |
Consumers who want aligned versions across published artifacts |
webauthn-model |
Teams that want typed WebAuthn models and value wrappers |
webauthn-serialization-kotlinx |
Teams mapping JSON/CBOR DTOs to typed models |
webauthn-core |
Teams validating ceremonies and authenticator data |
webauthn-crypto-api |
Teams plugging crypto/attestation implementations into validation and server flows |
webauthn-server-jvm-crypto |
JVM backends that want Signum-first hashing, signature, and attestation verification |
webauthn-server-core-jvm |
JVM backends that need registration/authentication ceremony services |
webauthn-server-ktor |
Ktor backends that want ready-made WebAuthn routes |
webauthn-server-store-exposed |
JVM backends storing WebAuthn state through Exposed |
webauthn-client-core |
Shared passkey orchestration and controller-driven flows |
webauthn-client-json-core |
Apps or SDKs that need raw JSON interoperability on top of typed clients |
webauthn-client-compose |
Compose apps that want remembered client/controller helpers |
webauthn-client-android |
Android apps using Credential Manager |
webauthn-client-ios |
iOS apps using AuthenticationServices |
webauthn-client-prf-crypto |
Client apps deriving crypto sessions from WebAuthn PRF extension outputs |
webauthn-network-ktor-client |
Clients talking to a /webauthn/* backend contract over Ktor |
webauthn-attestation-mds |
Backends that want optional FIDO Metadata Service trust anchors |
This repository is publicly released and still pre-1.0.
Current state:
kotlinx-serialization remains pinned to 1.9.0 while the current Signum compatibility issue is unresolved.SECURITY.md.docs/PUBLIC_LAUNCH_CHECKLIST.md.docs/MAVEN_CENTRAL.md.Renovate.tools/agent/setup-hooks.sh
tools/agent/quality-gate.sh --mode fast --scope changed --block false
tools/agent/quality-gate.sh --mode strict --scope changed --block false
./gradlew apiCheck --stacktrace
./gradlew publishToMavenLocal --stacktracedocs/CLIENT_FIRST_EXECUTION.mddocs/CLIENT_API_BENCHMARKS.mddocs/IMPLEMENTATION_STATUS.mddocs/ROADMAP.mddocs/ai/STEERING.mdLicense: Apache-2.0. See LICENSE.