Skip to content
Udibo
On this page
View Markdown

Identity that fits the way your app works.

Hosted sign-in, organizations, and permissions, designed together. Give people a place in your app, and the right access when they get there.

One integration, three foundations

Recognize the person

Passwords, social accounts, email codes, or magic links, with authenticator MFA and recovery codes, on hosted pages that carry your name, logo, and accent color.

Explore sign-in methods

Give them a place

Group customers into organizations with invitations, memberships, and roles. One person can belong to several, with different access in each.

Understand organizations

Resolve what they can do

Define permissions in your app's own words. Assign roles across a tenant, inside an organization, or on one resource. Read tenant and organization roles from the token, and check resource grants with the API.

Build with permissions

Your sign-in page, not ours

Hosted pages carry your name, logo, and accent color, with no Udibo watermark. People sign in to your product, not to a vendor.

Brand your hosted pages

How an integration works

Udibo speaks OAuth 2.0 and OpenID Connect, so standard clients connect. For Hono and React, the @udibo/oauth2 package gives you the backend and browser client.

TypeScript
const client = new DirectClient({
  issuer: required("AUTH_ISSUER"),
  clientId: required("AUTH_CLIENT_ID"),
  clientSecret: required("AUTH_CLIENT_SECRET"),
  redirectUri: required("AUTH_CALLBACK_URL"),
});

const bff = new HonoBff({
  client,
  sessionStore: sessions,
  authRequestStorage: new EncryptedCookieAuthRequestStorage({
    secret: required("AUTH_REQUEST_SECRET"),
  }),
  resourceServer,
  scope: required("AUTH_SCOPES"),
  defaultReturnTo: "/",
});

const app = new Hono();
app.route("/auth", bff.routes());
app.use("/api/*", bff.protect());

From the Use Udibo guide: sign-in routes at /auth, and every /api route needs a session.

Register your application

Create a tenant, register your callback URL, and copy the client ID and issuer from the dashboard.

Configure an application

Send people to your hosted pages

Udibo handles accounts, MFA, recovery, and email, then returns the browser to your callback with an authorization code.

Connect your first application

Enforce access in your backend

Your API validates the access token and reads the person's organization and permissions. Your app still decides who reaches each record.

Understand the pieces

Start from a working app

Each starter is a small, complete app secured with Udibo. Fork the one closest to your product as the base for a new project, or read it as a reference for how to secure that kind of app.

B2B SaaS

Organizations, a protected project list, and verified webhooks.

B2B SaaS walkthrough

Consumer app

Hosted account pages, profile claims, and records owned by one person.

Consumer app walkthrough

Client portal

Per-document access, organization grants, and checks across a list.

Client portal walkthrough

API service

A protected JSON API and an automated grant report, with no frontend.

API service walkthrough

MCP server

Tools gated by the signed-in person's permissions in their organization.

MCP server walkthrough

Run it locally first

The @udibo/oauth2 quickstart needs Node.js 24.2 or later, pnpm and Git, and no hosted account.

Run the package quickstart

Protection that starts on, and stays yours to tune

Hosted sign-in starts with breached-password checks, lockout, and rate limits switched on. Adjust each policy from your tenant's Security page, and use monitor mode to see what protection would refuse before it blocks anyone.

Read about account protection

Breached passwords refused

New passwords are checked against Have I Been Pwned by k-anonymity, so only a short hash prefix leaves Udibo.

Lockout that reveals nothing

Repeated wrong passwords lock the account and hit a rate limit, and a locked account gets the same answer as a wrong password.

A way back in

A locked-out person is emailed a one-time unlock link, or can reset their password from the sign-in page.

Monitor before you enforce

One tenant-wide switch records what attack protection would refuse — lockout, the sign-in rate limit, per-account email limits, MFA throttling, breached-password checks — as audit events, without blocking anyone.

Session lifetimes

Choose how long a sign-in lasts, how long remember-me holds, and when an idle session ends.

Bot challenges

Add a Cloudflare Turnstile challenge to your hosted sign-up, sign-in, and password-reset forms.

Built for the agents writing your code, and the ones you ship

Hand your coding agent docs it can read and a brief it can follow. When you build an MCP server, protect its tools with the same organizations and permissions as your app.

Text
Add authentication to this application using Udibo Identity.

Integration path: managed identity service.
Read https://www.udibo.com/llms.txt first.
Keep tokens and client secrets on the backend. Preserve PKCE, state, and CSRF.
Prove sign-in, refresh, logout, and refusal of unauthorized API requests.

An excerpt of the agent brief. The full version adds your framework, callback URLs, and identity mapping.

A brief your agent can follow

Paste the integration brief and your agent starts on the hosted path, with a definition of done, instead of writing its own password storage.

Get the full agent brief

Docs in plain text

llms.txt indexes every guide, llms-full.txt files carry the identity and package docs in one response each, and any guide is Markdown by adding .md to its URL.

Open llms.txt

Typed package reference

Every exported subpath and signature of @udibo/oauth2 on JSR, so an agent calls the API that exists rather than one it guessed.

Browse the reference

Protect an MCP server with Udibo

The MCP server starter checks each access token locally and answers with protected-resource metadata, so clients discover your tenant on their own. Give someone a role with write access and their agent can add notes; leave it out and it can only read.

Read the MCP server walkthrough

Common questions

The answers we would want before choosing an identity provider.

Compare the options

What is available today?

Available now

  • Password, social, email-code, and magic-link sign-in

  • Authenticator-based MFA and recovery codes

  • Passkeys, for sign-in and as a second factor

  • Organizations, invitations, and roles

  • Permissions across a tenant, an organization, or a resource

  • Webhooks and an exportable audit log

  • Self-service directory export

  • Your branding, with no Udibo watermark

Not available yet

  • SAML federation

  • SCIM provisioning

  • Custom domains for hosted pages

What does it cost?

Every released self-service feature is included on Free, with no enterprise upsell for features like MFA or the audit log. Paid plans add capacity as your usage grows.

Can I try it without an account?

Yes. The @udibo/oauth2 package quickstart runs the same sign-in flow against a local identity provider.

Can I move an existing app?

Yes. Keep your product and its data: map identities, test with a small cohort, and switch in stages with a rollback plan. Plan your migration.

What happens if I leave?

Export your directory when you need to move. Your app speaks standard OAuth 2.0 and OpenID Connect, so another provider can take its place.

Start free, grow with usage

Every released self-service feature is included on Free. Paid plans add capacity when your app needs more room.

Explore pricing