OIDC Identity Provider

A personal project to build a complete identity provider from the ground up using .NET and OpenIddict. It explores multi-tenancy, JWT security, and the OpenID Connect standard.

In Progress

Built With

  • .NET
  • OpenIddict
Main Admin dashboard showing registered Provider
Click to zoom
Step 1: Main Admin dashboard showing registered Provider.
Main dashboard showing registered Clients.
Click to zoom
Step 2: The Main Admin dashboard showing registered Clients.
Main Admin dashboard showing registered Scopes.
Click to zoom
Step 3: Main Admin dashboard showing registered Scopes.
Main Admin dashboard showing registered Scopes.
Click to zoom
Step 4: Registering a new Provider with specific short code and wensite url.
Main Admin dashboard showing registered Scopes.
Click to zoom
Step 5: Editing an existing Provider.
Registering a new client.
Click to zoom
Step 6: Registering a new client with specific redirect URIs, scopes, and associating it with a tenant.
scope options example.
Click to zoom
Step 7: Choose the scopes for the client.
A New Client
Click to zoom
Step 8: The New Client.
Registering a new scope.
Click to zoom
Step 9: Registering a new scope.

Technical Breakdown

The system is a standalone ASP.NET Core application that acts as the central security authority.

  • .NET: The web framework foundation.
  • OpenIddict: The low-level OpenID Connect server library.
  • .NET Identity: For user and role management.
  • Entity Framework & PostgreSQL: The data persistence layer.

To support multi-tenancy, I extended the base Identity and OpenIddict models. The most important customization is the `ProviderId` foreign key I added to the `OpenIddictApplications` table, creating a direct link between a client app and its tenant.