6 stable releases

2.1.1 Aug 20, 2022
2.1.0 Aug 6, 2022
1.0.4 Jun 21, 2022

#715 in Authentication

GPL-3.0-or-later

24KB
446 lines

Uniauth

Easy-to-use abstraction over authentication.

How it works

  1. Application tells the server of a requested action (for example, to log in) and asks for a nonce.
  2. Server issues a nonce which will never be used again.
  3. Application tells the user's local uniauth daemon to sign a challenge using the nonce, service name and username.
  4. User authenticates/authorizes the action.
  5. Daemon signs the challenge and response is sent from the application to the server.
  6. Server verifies the challenge against the user's key(s).

Server

Servers only store public keys, if/when the server is compromised the attacker cannot do anything with them.

Daemon

Uniauth daemons can do anything, from being completely autonomous to using a hardware authenticator.

Signature Algorithms

The application-daemon protocol supports any algorithm with signatures and keys under 65516 bytes long.

Currently Ed25519 and CRYSTALS-Dilithium3 are supported, Ed25519 has tiny signatures and keys, but Dilithium3 is post-quantum safe.

Dependencies

~3–17MB
~236K SLoC