RAMBO

RAMBO stands for Rights, Accounts, Multi-factor, Bearer tokens & OAuth. It is a sign-in service, an OpenID Provider, written in Hilde with Wolly. It serves the projects around Hilde and is the OAuth and OpenID sign-in for Gitea. Source: github.com/heikozim/hilde-rambo. Built on github.com/heikozim/hilde-wolly and github.com/heikozim/hilde.

From Go to Hilde

The first RAMBO, go-rambo, was written in Go: an OpenID Provider for a fixed list of its own tools, as FastCGI behind Hiawatha, made for OpenBSD. There is nothing wrong with Go, and go-rambo did its work. The Hilde version keeps everything a relying party sees: the same endpoints, claims, token headers, cookie names, configuration keys and command line. It reads go-rambo's data as it is: its SQLite schema, the peppered Argon2id hashes, the sealed TOTP secrets and the vault.

What the Hilde version adds comes from Hilde:

No user management in the browser

User management runs on the command line, on purpose: accounts, clients, roles, sessions and keys. The web interface has no admin routes, only each user's own account page. The commands are those of go-rambo (serve, setup, account, client, role, session, keys rotate, version), and what they print is go-rambo's text where a script could read it. Help and usage come from Standard.Arguments, which follows the builder form of clap; go-rambo's command line was built with cobra.

Running

RAMBO runs as FastCGI on a Unix socket behind Hiawatha; the repository carries the configuration for Hiawatha and the scripts to move from go-rambo on OpenBSD. It writes its audit lines to the system log and confines itself with Hilde's sandbox.