diff --git a/.gitignore b/.gitignore
index 96c99d0..a53370c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@ yarn-error.log*
# vercel
.vercel
+tsconfig.tsbuildinfo
diff --git a/components/AiUseCase.tsx b/components/AiUseCase.tsx
index 6689950..51bb76d 100644
--- a/components/AiUseCase.tsx
+++ b/components/AiUseCase.tsx
@@ -27,8 +27,8 @@ const guarantees = [
},
{
icon: ,
- title: "Prompt-injection safe",
- body: "The agent calls Authorizer with the end user’s JWT and the subject is pinned server-side. A hijacked agent holds no privileged credential—it asks as the user, and gets the user’s answer.",
+ title: "A hijacked agent can’t reach further than it was trusted with",
+ body: "The subject is pinned server-side—an agent can never ask on someone else’s behalf. And an agent acting for a user gets the intersection of what the agent is trusted with and what that user can see, never the user’s full reach. Prompt-inject it all you like: it cannot open a door it was not given.",
},
];
diff --git a/components/Features.tsx b/components/Features.tsx
index 9dd244c..c7370e3 100644
--- a/components/Features.tsx
+++ b/components/Features.tsx
@@ -1,15 +1,21 @@
import {
+ FaBuilding,
FaCloud,
FaCode,
FaConnectdevelop,
FaDatabase,
+ FaExchangeAlt,
+ FaFingerprint,
FaLock,
FaMailBulk,
FaNetworkWired,
FaPlug,
FaProjectDiagram,
FaRobot,
+ FaServer,
FaShieldAlt,
+ FaSitemap,
+ FaSyncAlt,
FaUserAstronaut,
FaUsers,
} from 'react-icons/fa';
@@ -68,7 +74,7 @@ const features = [
label: 'GraphQL, REST & gRPC APIs',
icon: ,
description:
- 'Integrate over three protocols on standard OAuth2 and OpenID Connect, with official SDKs for Go, Python, JavaScript, and React (Vue, Svelte, and Flutter coming soon).',
+ 'Full parity across three protocols on standard OAuth2 and OpenID Connect—every operation available over GraphQL, REST, and gRPC. Official SDKs for Go, Python, JavaScript, React, Vue, and Svelte.',
position: 12,
},
{
@@ -107,9 +113,51 @@ const features = [
icon: ,
description:
- 'Added layer of security with email based OTP for your basic authentication recipe',
+ 'TOTP authenticator apps, email and SMS one-time codes, and passkeys as a second factor—on by default, optional per user, with brute-force lockout and admin recovery.',
position: 9,
},
+ {
+ label: 'PASSKEYS & WEBAUTHN',
+ icon: ,
+ description:
+ 'Phishing-resistant passwordless login with WebAuthn passkeys—Touch ID, Face ID, Windows Hello, and hardware keys. Use them to sign in, or as a second factor.',
+ position: 14,
+ },
+ {
+ label: 'ENTERPRISE SSO (SAML & OIDC)',
+ icon: ,
+ description:
+ 'Per-organization SAML 2.0 and OIDC single sign-on to Okta, Entra ID, Google Workspace, and any compliant IdP. Authorizer also runs as a SAML 2.0 Identity Provider for your own downstream apps.',
+ position: 15,
+ },
+ {
+ label: 'ORGANIZATIONS & MULTI-TENANCY',
+ icon: ,
+ description:
+ 'First-class organizations with memberships, org-scoped admins, verified email domains, and home-realm discovery that routes users to their own identity provider.',
+ position: 16,
+ },
+ {
+ label: 'SCIM 2.0 PROVISIONING',
+ icon: ,
+ description:
+ 'Inbound SCIM 2.0 keeps users and groups in sync from your customers’ directories—automatic joiner, mover, and leaver handling, with SCIM groups mapped to roles.',
+ position: 17,
+ },
+ {
+ label: 'MACHINE-TO-MACHINE AUTH',
+ icon: ,
+ description:
+ 'Service accounts with the client_credentials grant, plus workload identity that needs no shared secret—private-key JWT (RFC 7523), SPIFFE JWT-SVIDs, and Kubernetes TokenReview.',
+ position: 18,
+ },
+ {
+ label: 'DELEGATION FOR AI AGENTS',
+ icon: ,
+ description:
+ 'RFC 8693 token exchange lets an agent act on a user’s behalf with a verifiable actor chain—delegation only, never silent impersonation. Give each agent its own permissions: it gets what it AND the user are allowed, never the user’s full reach.',
+ position: 19,
+ },
];
const pillars = [
diff --git a/constants/site.ts b/constants/site.ts
index 2c03481..faa1521 100644
--- a/constants/site.ts
+++ b/constants/site.ts
@@ -36,7 +36,7 @@ export const TWITTER_CARD_IMAGE_HEIGHT = 600;
/** ~155 chars for meta description snippets */
export const META_DESCRIPTION =
- "Own your identity layer. Self-host open-source auth & fine-grained authorization—OAuth2, OIDC, RBAC, MFA, OpenFGA—with permission-aware AI on your data.";
+ "Own your identity layer. Self-host open-source auth—OAuth2, OIDC, SAML SSO, SCIM, passkeys, MFA, OpenFGA—with permission-aware AI on your own data.";
export const DEFAULT_DESCRIPTION =
- "Own your identity layer with open-source authentication and authorization you self-host. OAuth2, OpenID Connect, social login, magic links, RBAC, MFA, and fine-grained authorization (OpenFGA) for permission-aware AI and RAG. GraphQL, REST, and gRPC APIs with Go, Python, and JS SDKs—your users stay in your own database, not someone else's dashboard. No per-seat auth tax.";
+ "Own your identity layer with open-source authentication and authorization you self-host. OAuth2, OpenID Connect, SAML 2.0 enterprise SSO, SCIM 2.0 provisioning, passkeys, MFA, organizations, machine-to-machine auth, and fine-grained authorization (OpenFGA) for permission-aware AI and RAG. GraphQL, REST, and gRPC APIs with Go, Python, JS, React, Vue, and Svelte SDKs—your users stay in your own database, not someone else's dashboard. No per-seat auth tax.";