This package provides a Swift implementation of the WebAuthn API focused on making it easy to leverage the power of WebAuthn to support Passkeys and security keys.
Adding the dependency
Add the following entry in your Package.swift
to start using WebAuthn
:
.package(url: "https://github.com/swift-server/swift-webauthn.git", from: "1.0.0-alpha.2")
and WebAuthn
dependency to your target:
.target(name: "MyApp", dependencies: [.product(name: "WebAuthn", package: "swift-webauthn")])
Configure your Relying Party with a WebAuthnManager
instance:
let webAuthnManager = WebAuthnManager(
configuration: WebAuthnManager.Configuration(
relyingPartyID: "example.com",
relyingPartyName: "My Fancy Web App",
relyingPartyOrigin: "https://example.com"
)
)
For a registration ceremony use the following two methods:
WebAuthnManager.beginRegistration()
WebAuthnManager.finishRegistration()
For an authentication ceremony use the following two methods:
WebAuthnManager.beginAuthentication()
WebAuthnManager.finishAuthentication()
If you add any new files, please run the following command at the root of the repo to identify any missing license headers:
% PROJECTNAME="Swift WebAuthn" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/check-license-header.sh)"
Swift WebAuthn is heavily inspired by existing WebAuthn libraries like py_webauthn and go-webauthn.