Skip to main content

An identity provider you run yourself

Odudu is an OpenID Connect and OAuth 2.0 server with an admin console, a command-line tool and documentation checked against the running server. It is one container and Postgres, and it is open source.

Your shell
curl -fsSLO https://github.com/wizzywit/odudu/releases/download/v0.1.0-rc.3/compose.yaml && docker compose up -d
docker compose logs setupOdudu is ready. console: http://localhost:3000/console/
curl.exe -fsSLO https://github.com/wizzywit/odudu/releases/download/v0.1.0-rc.3/compose.yaml; docker compose up -d
docker compose logs setupOdudu is ready. console: http://localhost:3000/console/

This is a release candidate. Needs Docker with Compose v2.

Read the docsFollow the quick start

A release candidate: try it and tell us what breaks. What is built and what is next

The Odudu admin console on a tenant's overview page: a menu of areas on the left, and counts of subjects, clients, groups, roles and scopes.The Odudu admin console on a tenant's overview page: a menu of areas on the left, and counts of subjects, clients, groups, roles and scopes.
The admin console, on a tenant's overview.

In pictures

How sign-in works

Odudu keeps sign-in in one place, so your apps never handle a password.

How a person signs in through OduduA person's browser on the left, Odudu in the middle with the ways to sign in, and two apps on the right. The browser opens an app, the app sends it to Odudu, Odudu signs the person in and sends them back with a signed pass. A second app sends them to Odudu, which recognises them and sends them straight back.Their browserApp AApp BOduduPasswordPasskeyAuthenticatorHow a person signs in through OduduA person's browser on the left, Odudu in the middle with the ways to sign in, and two apps on the right. The browser opens an app, the app sends it to Odudu, Odudu signs the person in and sends them back with a signed pass. A second app sends them to Odudu, which recognises them and sends them straight back.Their browserApp AApp BOduduPasswordPasskeyAuthenticator

Sign in once, and use every app of that tenant that trusts Odudu.

  1. A person opens your app.

  2. Your app sends them to Odudu to sign in.

  3. They sign in on Odudu's own page. Odudu supports passwords, passkeys and codes from an authenticator app.

    • Passwords
    • Passkeys
    • Authenticator codes
  4. Odudu sends them back with a signed pass, and your app lets them in.

  5. Later, they open a second app, and it sends them to Odudu too.

  6. Odudu sees they are already signed in, so it shows no sign-in page. Straight back, with no password asked. Sign in once, and use every app of that tenant that trusts Odudu.

    • Single sign-on across one tenant
  7. Sign out of one, and the apps that registered for it are told.

    • Back-channel logout

The ideas are in Sessions and Tokens, and Sign a user in shows every request.

What you get

A complete sign-in service, built and shown working

  • Standard sign-in

    The authorization code flow with PKCE always on, and discovery, signing keys, user info, introspection and revocation for every tenant.

  • Many tenants

    Any number of tenants on one server, each with its own people, apps, keys and settings, kept apart by the database itself.

  • Passwords and second factors

    Passwords with a policy and lockouts, passkeys, authenticator apps and recovery codes, chosen per tenant.

  • Sessions that end properly

    Refresh tokens that rotate and are caught when stolen, and logout that reaches the apps that registered for it.

  • Services and delegation

    Client credentials for a service that signs in as itself, and token exchange for acting on someone else's behalf.

  • An admin API and console

    More than a hundred operations, each checked against the capability it needs, and a console with a page for every area.

  • An audit trail

    Every administrative change, sign-in, refusal and token is recorded, filterable and exportable.

  • One container and Postgres

    Migrations run at boot, health endpoints are built in, and TLS is ended in front of the server.

First run

From docker compose up to your first sign-in

  1. Start it

    One command downloads the Compose file and starts Postgres, a one-time setup step and the server.

  2. Sign in to the console

    The setup step prints the console address and the first administrator's sign-in, once.

  3. Sign a person in to an app

    Make a tenant, register an app and sign someone in, from the console or the command line.

The quick start has every step, with what you should see.

Start where you are

Four ways in

Four small apps that work

Each has a guide that walks through it. The source is in the examples folder (opens in a new tab).

How it compares

Honest about where it stands

You may be choosing between Odudu and another identity provider you run yourself. The comparison page lists what Odudu does today, each with a page that shows it working, and what it does not do. It says nothing about other products, because facts about them go stale.

Odudu is a release candidate. It has not had an independent security review yet and it runs as one instance. The roadmap lists what is built, what comes next and what is decided against.

Where it runs

Self-hosted today, hosted in the works

Run it yourself

This is what exists. Odudu is one container beside Postgres, and the quick start has it running on your machine with the console open. Operating Odudu covers a server other people can reach.

Hosted Odudu In the works

A hosted Odudu, run for you, is in the works. It has no date. Nothing in the open source server waits for it. Read the roadmap

Free software: the server, the console and the command-line tool are AGPL-3.0, and the documentation text and the examples are Apache-2.0. An app that only talks to Odudu over OpenID Connect or the admin API is not a derivative work of it. How the licences fit together. The fonts are IBM Plex Sans and Mono under the SIL Open Font License 1.1 (Sans, Mono)