jmbaur / webauthn-tiny

A tiny webauthn server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WebAuthnTiny

The goal of this project is to provide a mechanism for securely accessing private resources over the internet in the simplest possible manner.

Usage: webauthn-tiny [OPTIONS] --rp-id <RP_ID> --rp-origin <RP_ORIGIN> --session-secret-file <SESSION_SECRET_FILE> --password-file <PASSWORD_FILE>

Options:
      --address <ADDRESS>
          Address to bind on [env: ADDRESS=] [default: [::]:8080]
      --rp-id <RP_ID>
          Relying Party ID [env: RP_ID=]
      --rp-origin <RP_ORIGIN>
          Relying Party origin [env: RP_ORIGIN=]
      --extra-allowed-origin <EXTRA_ALLOWED_ORIGIN>
          Extra allowed origin [env: EXTRA_ALLOWED_ORIGIN=]
      --session-secret-file <SESSION_SECRET_FILE>
          Session secret file [env: SESSION_SECRET_FILE=]
      --password-file <PASSWORD_FILE>
          Password file [env: PASSWORD_FILE=]
      --state-directory <STATE_DIRECTORY>
          Directory to store program state [env: STATE_DIRECTORY=] [default: /var/lib/webauthn-tiny]
  -h, --help
          Print help
  -V, --version
          Print version

Password File

The password file is similar to the htpasswd file format. Each username/hash pair is on a separate line. The pair is separated by a colon, where the password hash is an argon2 hash. An individual line in the file with a valid hash can be generated like so:

echo username:$(systemd-ask-password -n | argon2 $(openssl rand -hex 16) -id -e)

Reverse Proxy Setup

Nginx

See module.nix for an example nginx configuration.

About

A tiny webauthn server


Languages

Language:Rust 73.2%Language:Nix 17.6%Language:TypeScript 4.6%Language:Just 2.7%Language:Liquid 1.3%Language:Python 0.5%