Otoroshi Admins
Overview
Otoroshi Admins are the accounts that control who can access the Otoroshi admin backoffice and what they are allowed to do once inside. Because the backoffice exposes every aspect of gateway configuration -- routes, API keys, certificates, global settings, and more -- it is critical to restrict access to trusted operators and to limit each operator to only the resources they need.
It is important to distinguish Otoroshi admins from auth module users. Auth modules (OAuth2, OIDC, LDAP, SAML, etc.) authenticate end-users who access applications protected by Otoroshi, known as "private apps". Otoroshi admins, on the other hand, are specifically the operators who log into the backoffice to configure and manage the gateway itself.
Two authentication methods
Otoroshi supports two types of admin accounts:
- Simple admins authenticate with a username (email) and a bcrypt-hashed password. This is the default and most straightforward method.
- WebAuthn admins authenticate using FIDO2/WebAuthn hardware security keys (such as a YubiKey). This provides phishing-resistant, passwordless authentication for environments where stronger security guarantees are required.
Fine-grained access control (RBAC)
Every admin account carries a rights definition that scopes its access by tenant (organization) and team, with independent read and write permissions for each. An admin whose rights grant wildcard access (*) to all tenants and all teams with full read/write is considered a super admin with unrestricted control. Any other configuration produces a scoped admin who can only view or modify resources within the tenants and teams explicitly granted to them.
Additionally, each admin can have entity validators -- rules that constrain which values an admin may set when creating or modifying specific entity types. This allows, for example, enforcing that a particular admin can only create routes tagged with a certain label or belonging to a certain metadata scope.
Security philosophy
The admin system follows a security-first approach: passwords are always stored as bcrypt hashes, modern hardware-based authentication is a first-class option, and the RBAC model defaults to least privilege. Together, these features ensure that backoffice access can be tightly controlled in both small single-team deployments and large multi-tenant environments.
UI page
You can find all admins here
Common properties
Both admin types share the following properties:
username: the email address used as the admin identifierpassword: the bcrypt-hashed password of the adminlabel: a display label for the admincreatedAt: the creation timestamptype: the type of admin (SIMPLEorWEBAUTHN)tags: list of tags associated to the adminmetadata: list of metadata associated to the adminrights: the access rights of the admin (see below)adminEntityValidators: a map of entity-type to validation rules that restricts which entities this admin can create or modify
Admin types
Simple admin
A Simple admin authenticates using a username (email) and a password. This is the default and most common admin type.
WebAuthn admin
A WebAuthn admin authenticates using a FIDO2/WebAuthn hardware security key (such as a YubiKey). In addition to the common properties, a WebAuthn admin has:
handle: the WebAuthn handle identifiercredentials: a map of registered WebAuthn credentials (key id to credential data)
Rights
The rights field controls what the admin can access. It is a list of UserRight entries, each defining access to a tenant and its teams:
{
"rights": [
{
"tenant": {
"value": "*",
"canRead": true,
"canWrite": true
},
"teams": [
{
"value": "*",
"canRead": true,
"canWrite": true
}
]
}
]
}
tenant.value: the tenant identifier (*for all tenants)tenant.canRead: read access to the tenanttenant.canWrite: write access to the tenantteams[].value: the team identifier (*for all teams)teams[].canRead: read access to the teamteams[].canWrite: write access to the team
An admin with tenant.value = "*" and full read/write on all teams is a super admin with unrestricted access.
Entity validators
The adminEntityValidators field allows restricting the values an admin can set when creating or modifying entities. It is a map where keys are entity types and values are lists of JSON validation rules. This is useful to enforce that certain admins can only create entities with specific metadata, tags, or other field constraints.
Admin API
GET /api/admins/simple # List all simple admins
POST /api/admins/simple # Create a simple admin
GET /api/admins/simple/:id # Get a simple admin
PUT /api/admins/simple/:id # Update a simple admin
DELETE /api/admins/simple/:id # Delete a simple admin
GET /api/admins/webauthn # List all WebAuthn admins
POST /api/admins/webauthn # Create a WebAuthn admin
GET /api/admins/webauthn/:id # Get a WebAuthn admin
PUT /api/admins/webauthn/:id # Update a WebAuthn admin
DELETE /api/admins/webauthn/:id # Delete a WebAuthn admin