What it is

MultiAuthX is an authentication platform I am building on .NET for B2B applications. It manages tenant users and allows each tenant to use its preferred authentication method.

The main idea came from seeing authentication and identity logic spread across different products. Login, roles, claims, external providers, and tenant rules often start as small requirements, but they quickly become an important part of the system.

Instead of implementing these concerns again for every product, I wanted to give them a clear boundary and a reusable platform of their own.

The project is currently private. The public repository and demo are coming soon.

Why I built it

Identity work usually starts with a login page and token handling, but it rarely stays that simple. Soon, the system needs roles, claims, external providers, SSO, audit records, tenant-specific rules, and different deployment configurations.

I wanted a structure that could handle this growth without mixing all those decisions into the business applications that use it.

How the repository is organized

I split the repository into core and enterprise areas:

  • src/ contains the core runtime and shared libraries.
  • Provider integrations contain work such as AWS Cognito support.
  • Infrastructure modules handle deployment concerns.
  • Enterprise extensions cover capabilities such as RBAC, SAML, and audit.

This separation allows each part to grow without forcing every feature into the same layer or making the core depend on enterprise-specific requirements.

Technical direction

The platform follows a modular backend architecture. I am focusing on a few principles:

  • Keep identity concerns visible and explicit.
  • Separate runtime behavior from infrastructure and deployment.
  • Allow different identity providers to have their own implementations.
  • Keep enterprise capabilities separate from the public core.

Why it belongs on this site

MultiAuthX represents the kind of systems I enjoy building. It takes a repeated business and security problem, gives it clear boundaries, and turns it into a reusable platform instead of solving it again with a different patch in every application.