Hi,
I’m happy to announce WebAuthn.jl, a Julia package for W3C WebAuthn and modern passwordless authentication using passkeys and security keys.
WebAuthn.jl brings end-to-end functions for registration and login, CBOR/COSE key parsing, secure challenge generation, signature verification, and PEM export—making it straightforward to integrate passkey or FIDO2/U2F flows into Julia web servers or applications without any required web framework.
Features
- CBOR/COSE key parsing (P-256/ES256, RSA/RS256, Ed25519)
- Base64url encoding/decoding & random challenge generator
- Registration and authentication option builders (browser-ready)
- Secure signature and challenge verification (OpenSSL/Sodium-backed)
- PEM export for downstream tools or libraries
- Fully framework-agnostic code (works with any HTTP/Socket tool)
How WebAuthn Works
WebAuthn enables passwordless, phishing-resistant login using public-key cryptography.
A user’s device generates and stores a private credential (passkey); the private key never leaves the device or browser.
Demo & Workflow
Here are a few screenshots from the included minimal server and client example (HTML/JS assets provided in the source code):
For the full example look here.
You can test WebAuthn with a physical security key, or (in Chrome) via your smartphone over Bluetooth:
- Insert a hardware device and register.
- Or, scan a QR code with your phone to use it as a “virtual” security key.
Documentation & Contributions
API docs
GitHub source & issue tracker
- Contributions and feedback are very welcome!
P.S. This also serves as the foundation for a third-party AuthPlugin for GenieFramework, which I hope to publish in the future.
Please try it out and give feedback!