Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Hexagon/webauthn-skeleton
Skeleton for a Web Authentication API website
https://github.com/Hexagon/webauthn-skeleton
Last synced: about 1 month ago
JSON representation
Skeleton for a Web Authentication API website
- Host: GitHub
- URL: https://github.com/Hexagon/webauthn-skeleton
- Owner: Hexagon
- License: mit
- Created: 2021-12-05T19:06:27.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-19T12:51:46.000Z (9 months ago)
- Last Synced: 2024-11-09T04:51:15.023Z (about 1 month ago)
- Language: JavaScript
- Size: 321 KB
- Stars: 29
- Watchers: 4
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-webauthn - webauthn-skeleton: Node.js/Koa application - This is a working skeleton of a Node.js/Koa application with passwordless login (Web Authentication API, WebAuthN, FIDO2). (Demos)
README
# webauthn-skeleton
This is a working skeleton of a Node.js/Koa application with passwordless login (Web Authentication API, WebAuthN, FIDO2).
Main version (Koa/fido2-lib) live at [https://56k.guru/webauthn](https://56k.guru/webauthn)
Deno version (Deno/Opine/fido2-lib) live at [https://56k.guru/webauthn-deno](https://56k.guru/webauthn-deno)## Features
* Tested with Windows Hello, Yubikey or Android lockscreen, more to come.
* Supports adding more than one authentication method to the same account.
* Supports transfering account to another device by a time limited one time link or QR-code.Using Koa and fido2-lib
## Versions
There are multiple versions of this demo available in different branches
| Runtime | Server framework | Branch | Webauthn-lib | Live at |
| ------- | ---------------- | ------ | ------------ | ------- |
| Node | Koa | [main](https://github.com/Hexagon/webauthn-skeleton) | [fido2-lib](https://www.npmjs.com/package/fido2-lib) | [56k.guru/webauthn](https://56k.guru/webauthn) |
| Node | Express | [server/express](https://github.com/Hexagon/webauthn-skeleton/tree/server/express) | [fido2-lib](https://www.npmjs.com/package/fido2-lib) | - |
| Deno | Opine | [server/deno](https://github.com/Hexagon/webauthn-skeleton/tree/server/deno) | [fido2-lib](https://www.npmjs.com/package/fido2-lib) | [56k.guru/webauthn-deno](https://56k.guru/webauthn-deno) |## Getting it running
First clone this repo, then:
### 1. Install dependencies
```npm install```
### 2. Generate self signed certificate and keys (webauthn requires HTTPS)
**I repeat, you need to generate keys, certificate and serve using https for webauthn to work**
```
cd keysopenssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -subj '/CN=localhost'
openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pemrm csr.pem
cd ..
```### 3. Start server
```node app```
### 4. Open browser
```https://localhost:3000```
## Docker development build
```docker build . --tag="hexagon/webauthn-skeleton"```
```
sudo docker run \
-d \
--restart=always \
-e WAS_ORIGIN="https://localhost:3000" \
-e WAS_RPID="localhost" \
-e WAS_BASE_URL="https://localhost:3000/" \
-e WAS_BASE_URL="https://localhost:3000/orlikethisifservedfromasuburl" \
-e WAS_RPNAME="WebAuthN Demo" \
-e WAS_MODE="development" \
-e WAS_PORT=3000 \
--name webauthndemo \
hexagon/webauthn-skeleton```