Authentication for modern developers

A multi-tenant authentication platform built for developers. Secure, customizable, and developer-friendly with SDKs for popular frameworks.

React Integration
index.jsx
// src/index.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import { AuthavaProvider } from '@authava/react-client';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <AuthavaProvider config={{ domain: 'auth.yourdomain.com' }}>
      <App />
    </AuthavaProvider>
  </React.StrictMode>
);

Built for developers, by engineers

Authava provides a complete authentication solution with the flexibility developers need and the security modern applications require.

Developer-First SDKs

TypeScript-native SDKs for React and vanilla JS with full type safety and IntelliSense support to accelerate your development.

Security-First Design

Multi-tenant isolation, MFA, passwordless login, and robust security practices built into the core of our platform.

Infrastructure as Code

Terraform provider for managing authentication domains, settings, and configurations through your IaC workflow.

Full Customization

White-label authentication with custom domains, branding, email templates, and UI components to match your brand.

Seamless Integration

Drop-in components for React with automatic session management and refresh to get up and running quickly.

Usage Insights

Track active users, authentication events, and security metrics to understand how your users interact with your app.

Integrate in minutes, not days

Our client libraries make it easy to add authentication to any application with just a few lines of code.

React Integration

npm install @authava/react-client @authava/client
// src/index.jsx or src/main.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import { AuthavaProvider } from '@authava/react-client';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <AuthavaProvider config={{
      domain: 'auth.yourdomain.com',
      secure: true,
      autoRefresh: true,
      refreshBuffer: 5
    }}>
      <App />
    </AuthavaProvider>
  </React.StrictMode>
);
import { useAuthava } from '@authava/react-client';

function Profile() {
  const { isLoading, session, sessionState } = useAuthava();

  if (isLoading) {
    return <div>Loading...</div>;
  }

  if (!session) {
    return <div>Please log in</div>;
  }

  return (
    <div>
      <h1>Welcome, {session.user.email}!</h1>
      <p>Session status: {sessionState.status}</p>
    </div>
  );
}
import { useAuthava } from '@authava/react-client';

function AdminPanel() {
  const { hasRole, hasPermission } = useAuthava();

  // Check for a single role
  if (!hasRole('admin')) {
    return <div>Access denied</div>;
  }

  // Check for multiple permissions (any match)
  const canManageUsers = hasPermission(['create_user', 'delete_user']);

  return (
    <div>
      <h1>Admin Panel</h1>
      {canManageUsers && <UserManagement />}
    </div>
  );
}

TypeScript/JavaScript Integration

npm install @authava/client
import { AuthavaClient } from '@authava/client';

// Initialize the client
const authava = new AuthavaClient({
  domain: 'auth.yourdomain.com',
  secure: true,
  autoRefresh: true
});

// Check if user is authenticated
const isAuthenticated = await authava.isAuthenticated();

if (isAuthenticated) {
  // User is logged in
  const session = await authava.getSession();
  console.log(`Logged in as: ${session.user.email}`);
} else {
  // Redirect to login
  window.location.href = authava.getLoginUrl();
}
// Listen for session changes
authava.onSessionChange((session) => {
  if (session) {
    console.log('Session updated', session);
  } else {
    console.log('User logged out');
  }
});

// Manual logout
await authava.logout();

// Check user roles and permissions
const session = await authava.getSession();
if (session) {
  const isAdmin = session.user.roles.includes('admin');
  const canDeleteUsers = session.user.permissions.includes('delete_user');
}

Infrastructure as Code with Terraform

terraform {
  required_providers {
    authava = {
      source  = "authava/authava"
      version = "~> 0.1.0"
    }
  }
}

provider "authava" {
  api_token = var.authava_api_token
  # Optional: host = "https://api.authava.com/v1"
}
resource "authava_domain" "example" {
  domain = "auth.example.com"

  # Email settings
  email_provider = "authava"
  from_email     = "[email protected]"
  from_name      = "Example Auth"

  # Whitelabel settings
  company_name    = "Example Corp"
  logo_url        = "https://example.com/logo.png"
  favicon_url     = "https://example.com/favicon.ico"
  primary_color   = "#2563eb"
  secondary_color = "#4f46e5"
  footer_text     = "© 2024 Example Corp"
  terms_url       = "https://example.com/terms"
  privacy_url     = "https://example.com/privacy"

  # Allowed origins
  origins = [
    "dashboard.example.com",
    "auth.example.com"
  ]
}

How Authava Works

Authava simplifies authentication with a powerful, flexible platform that integrates seamlessly with your application.

terraform
resource "authava_domain" "main" {
  domain = "auth.${var.app_domain}"
  company_name = var.company_name
  logo_url = var.logo_url
  primary_color = var.brand_color

  origins = [
    "auth.${var.app_domain}",
    "dashboard.${var.app_domain}"
  ]
}
1

Set Up Your Auth Domain

Create a custom authentication domain with your branding, colors, and allowed origins. Deploy with infrastructure-as-code or through our dashboard.

index.jsx
import { AuthavaProvider } from '@authava/react-client';

function App() {
  return (
    <AuthavaProvider
      config={{
        domain: 'auth.yourdomain.com',
        autoRefresh: true
      }}
    >
      <YourApplication />
    </AuthavaProvider>
  );
}
2

Integrate the SDK

Add Authava to your application with just a few lines of code. Our SDKs handle authentication flows, session management, and token refresh automatically.

profile.jsx
import { useAuthava } from '@authava/react-client';

function Profile() {
  const { session, isLoading } = useAuthava();

  if (isLoading) return <Spinner />;
  if (!session) return <LoginRedirect />;

  return (
    <div>
      <h1>Welcome, {session.user.name}!</h1>
      <UserDetails user={session.user} />
    </div>
  );
}
3

Protect Your Routes

Use our hooks and components to protect routes, check permissions, and display user information. Authava handles the complex authentication logic for you.

Authava Dashboard
4

Manage & Monitor

Use the Authava dashboard to manage users, view authentication metrics, configure social providers, and customize your authentication experience.

profile-management.jsx
import { useAuthava } from '@authava/react-client';

function ProfileManagement() {
  const {
    session,
    changePassword,
    setupTotp,
    verifyTotp,
    removeMfaMethod
  } = useAuthava();

  // Access built-in profile management
  // or implement your own custom flows
  return (
    <div>
      {/* Use Authava's built-in profile portal */}
      <a href={`https://${domain}/profile`}>
        Manage Profile
      </a>

      {/* Or build custom UI with our SDK */}
      <CustomProfileUI
        onChangePassword={changePassword}
        onSetupMFA={setupTotp}
      />
    </div>
  );
}
5

User Profile Management

Every Authava domain includes a white-labeled profile portal where users can manage their passwords, set up multi-factor authentication, and update their information. Developers can either direct users to this built-in portal or implement custom profile management using our comprehensive SDK.

Getting Started with Authava

Watch our tutorial to learn how to integrate Authava into your application in minutes.

Video Tutorial Coming Soon

Our comprehensive video guide will walk you through setting up Authava from start to finish.

Security-First Architecture

Authava is built with security as a core principle, providing the features you need to protect your users and data.

Multi-Tenant Isolation

Complete data isolation with separate databases per tenant for maximum security and privacy.

Advanced Authentication

Support for MFA, passwordless login, and customizable password policies to protect user accounts.

Audit Logging

Comprehensive audit trails for all authentication events and administrative actions for transparency.

Custom Access Controls

Fine-grained role and permission management with custom access policies for your application.

Modern Authentication

Support for WebAuthn, social login providers, and magic links for a seamless user experience.

Session Management

Configurable session controls including idle timeout, forced logout, and device tracking.

We're committed to continuously improving our security practices as we grow

Learn more about our security approach →

Frequently Asked Questions

Get answers to common questions about Authava's authentication platform.

What makes Authava different from other authentication solutions?

Authava combines the flexibility of a custom authentication solution with the convenience of a managed service. We offer true multi-tenant isolation, developer-first SDKs with TypeScript support, and infrastructure-as-code deployment options that integrate seamlessly with your DevOps workflow.

Can I customize the authentication UI to match my brand?

Yes! Authava is fully white-label. You can customize the authentication domain, logo, colors, email templates, and UI components to create a seamless branded experience for your users. All customizations can be managed through our dashboard or via infrastructure-as-code.

What authentication methods does Authava support?

Authava supports a wide range of authentication methods including:

  • Email/password authentication
  • Magic link (passwordless) login (coming soon)
  • Multi-factor authentication (MFA)
  • Social login (Google, GitHub, etc.)
  • WebAuthn/FIDO2 support (coming soon)
  • OAuth 2.0 and OpenID Connect
  • SAML for enterprise SSO
  • Custom authentication flows

How does Authava handle user data and privacy?

Authava is designed with privacy and security as core principles. We use multi-tenant isolation with separate databases per tenant, ensuring complete data separation. All sensitive data is encrypted at rest and in transit. We're compliant with GDPR, CCPA, and other privacy regulations, and we provide tools to help you meet your compliance requirements.

Can I migrate my existing users to Authava?

Yes, we provide migration tools and APIs to help you transition your existing users to Authava. While our platform supports importing user data, for security reasons, users will need to reset their passwords during the first login. This ensures proper encryption and security standards are maintained. We provide a streamlined password reset flow to make this process as smooth as possible for your users.

How does Authava handle user profile management?

Authava provides a complete solution for user profile management. Every authentication domain includes a white-labeled profile portal where users can manage their passwords, set up multi-factor authentication, update their information, and manage their security settings. This means developers don't have to build these features themselves.

For power users who want more control, our client libraries expose a comprehensive API that allows you to build custom profile management experiences. The @authava/react-client library provides hooks for all profile operations including changePassword, setupTotp, verifyTotp, removeMfaMethod, and more.

What kind of support does Authava offer?

All Authava plans include comprehensive documentation, code examples, and community support. Our paid plans include priority email support, SLAs, and dedicated support channels. Enterprise plans offer dedicated account management, custom implementation assistance, and 24/7 emergency support.

Open Source Client Libraries

Our client libraries are open source and available on GitHub. Contribute, report issues, or customize them to fit your needs.

// Example of a custom authentication flow
import { AuthavaClient } from '@authava/client';

// Initialize with your domain
const authava = new AuthavaClient({
  domain: 'auth.yourdomain.com'
});

// Custom login with email and password
async function login(email, password) {
  try {
    const session = await authava.login({
      email,
      password,
      options: {
        redirectTo: '/dashboard',
        rememberDevice: true
      }
    });

    return {
      user: session.user,
      token: session.token,
      expiresAt: session.expiresAt
    };
  } catch (error) {
    console.error('Login failed:', error.message);
    throw error;
  }
}

// Check if user has required permissions
function hasAccess(session, requiredPermissions) {
  if (!session) return false;

  return requiredPermissions.every(permission =>
    session.user.permissions.includes(permission)
  );
}

Ready to secure your application?

Join our growing community of developers building with Authava.