Anonymous OIDC provider
Find a file
2024-06-02 13:31:57 +02:00
src fix token claims creation 2024-06-01 23:44:17 +02:00
static refactor, rethink, rewrite 2024-06-01 22:44:32 +02:00
.gitignore initial commit 2024-02-25 18:59:24 +01:00
Cargo.lock temporairly use custom tide-serve-dir-macro 2024-06-02 13:31:57 +02:00
Cargo.toml temporairly use custom tide-serve-dir-macro 2024-06-02 13:31:57 +02:00
config.yml.sample correct config file in readme 2024-06-01 23:06:41 +02:00
README.md correct config file in readme 2024-06-01 23:06:41 +02:00

^NON [anon]

Extremely rudimentary OIDC provider. Users hold account codes from which their identities are derived on-demand.

Each identity is separate for different services, but can be accessed from a single account code. ^NON does not have a database of the users, so nobody can correlate user information across services.

Installation

  1. build binary with cargo

  2. fill out config.yml.sample. The server expects a file called config.yml in its working directory.

  3. Generate the keypair for signing JWT tokens with:

    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 | \
       openssl pkcs8 -topk8 -nocrypt -outform der > rsa-key.pk8
    
  4. Enjoy :)

Alternatively you can use the pre-built docker image:

git.nolog.cz/nolog.cz/anon:latest

Deployment notes

When deploying, you should be aware of the potential of a birthday attack on the system. For v1 of the account code, we should expect a collision after about 2^36 unique accounts, which means that, without rate-limiting, there is the potential to brute-force an account / accidentally log into someone else's account. You should consider the amount of users which will use the system, and set up a rate-limiter.

Improbable things happen all the time, so better safe than sorry :)