Workforce identity without the per-seat bill.
Open source SSO, MFA, directory and SCIM, free up to 100 users, with an API for core Okta resources.

[
{
"id": "9guA0JYo2KkokOCeGfO8CBp6JpAJaErl",
"status": "ACTIVE",
"type": {
"id": "default"
},
"profile": {
"firstName": "Ana",
"lastName": "Rivera",
"email": "ana@example.com",
"login": "ana@example.com"
}
}
]

[
{
"id": "e1a681ee-5505-4b60-a95c-a923b140537f",
"name": "saml_2_0",
"label": "Payroll",
"status": "ACTIVE",
"signOnMode": "SAML_2_0"
}
]

[
{
"id": "f2d67a84-624e-49ff-93f0-f445a26e5d8a",
"type": "OKTA_GROUP",
"objectClass": [
"okta:user_group"
],
"profile": {
"name": "Finance",
"description": "Finance team"
}
}
]

[
{
"eventType": "user.session.start",
"severity": "INFO",
"actor": {
"type": "User",
"alternateId": "admin@example.com"
},
"outcome": {
"result": "SUCCESS",
"reason": null
}
}
]
$0Up to 100 users, apps and servers, with every feature
11Authenticators, from passkeys to RSA SecurID
185Okta SDK operations answered
1Postgres database for each organization
Every door runs the same check. Try it.
OIDC, SAML and the forward-auth gateway all ask these questions, in this order. Change the situation and follow the answer.
- Network zoneNot blocked
- AssignmentAssigned through Finance
- Sign-in ruleCompliant device, so a second factor is required
- ProofA passkey is strong enough
allowed: no denial to log
The rules here are samples: a compliant device at high risk needs a passkey, a compliant device otherwise needs a second factor, and anything else is denied. You write your own, per app.
One door for your people.
Your logo on the sign-in page. Passkeys, push or an authenticator app behind it. Every app they’re assigned on one page.

Okta’s SDKs work with IdRa.
Change the issuer URL and keep your code. Your scripts keep their calls for users, groups, apps, policies, zones, logs, event hooks and authorization servers, and the Okta Terraform provider works with IdRa too.
// Change the address. Keep the call.
const client = new okta.Client({
orgUrl: "https://acme.idra.team",
token: process.env.IDRA_TOKEN,
authorizationMode: "SSWS",
});
const users = await client.userApi.listUsers({
search: 'profile.email sw "ana"',
});
Resources under /api/v1:
- Users
- Groups
- Group rules
- Apps
- Authorization servers
- Policies
- Network zones
- Event hooks
- Logs
- User risk
Sign-ins and changes leave a record.
Sign-ins, denials, admin changes and provisioning, in one log. Search it, export it to CSV, poll it from the API, stream it to Splunk, or push it to your systems with signed event hooks.


A database per customer, not a column.
Each organization has its own Postgres database, address, signing keys, policies and log. Each request connects to one organization’s database, chosen from its address, and Postgres has no cross-database queries. Host many customers from one deployment, each on a domain they’ve verified.
- acme.idra.team
- globex.idra.team
- login.example.com
$0 Up to 100 users. Every feature.
- Okta Essentials$20,400
- Okta Starter$7,200
- IdRa$0
IdRa is open source under the MIT license. Read the code, run it yourself, or use the hosted service, free up to 100 users, apps and servers per org.
Is IdRa right for you?
Choose IdRa if
- Your identity bill grows with every hire
- You host organizations for your own customers
- Your apps speak SAML, OIDC and SCIM
What you get
- Every feature on every plan
- A database for each organization
- An open source codebase under the MIT license
Create your organization.
Pick an address and confirm your email, then sign in as its first admin. A setup wizard takes you through the rest.