Two Products, One Goal: OAuth Made Simple

Noundry Auth Suite

Stop wrestling with Identity Server. Ship OAuth in minutes.

Two complementary tools: AuthnzNet (local OAuth server) + Noundry.Authnz (client library). Test locally, deploy anywhere.

AuthnzNet

Local OAuth Server + CLI

The developer-first IdentityServer alternative. A full OAuth 2.0 + OIDC server delivered as a .NET CLI tool. Free forever.

$ ndaz quickstart
$ ndaz serve
  • - RS256 JWT + PKCE support
  • - OIDC compliant
  • - Multi-tenant architecture
  • - Built-in Login & Consent UI

Noundry.Authnz

NuGet Client Library

A NuGet package that connects your app to any OAuth IdP - AuthnzNet locally, or Google/GitHub in prod.

$ dotnet add package Noundry.Authnz
  • - Works with ANY IdP
  • - Pre-configured providers
  • - OnOAuthSuccess hooks
  • - Beautiful TagHelpers

How They Work Together

Use both for local dev, then swap AuthnzNet for real providers in production. Your app code stays the same.

Development

Your App
uses
Noundry.Authnz
connects to
AuthnzNet (local)

No API keys, works offline

Production

Your App
uses
Noundry.Authnz
connects to
Google / GitHub / Azure

Same code, real IdPs

One Config Change, That's It

// appsettings.Development.json

{
 "OAuth": {
 "Providers": {
 "authnznet": {
 "ClientId": "client_xxx",
 "ClientSecret": "secret_yyy",
 "Authority": "https://localhost:5000"
 }
 }
 }
}

// appsettings.Production.json

{
 "OAuth": {
 "Providers": {
 "google": {
 "ClientId": "xxx.apps.googleusercontent.com",
 "ClientSecret": "your-secret"
 }
 }
 }
}

AuthnzNet

OAuth 2.0 + OIDC server in three commands. The developer-first IdentityServer alternative — free forever.

60-Second Setup

1

Install the CLI

dotnet tool install -g Noundry.AuthnzNet.CLI
2

Create tenant, client, user

ndaz quickstart
3

Start the server

ndaz serve

# Output from ndaz quickstart:

OAuth Configuration
+---------------+------------------------------+
| Authority | https://localhost:5000 |
| Client ID | client_4d47e486494d4ab68 |
| Client Secret | 1IHI0Wvw1cQQuEJAnsNciWR1 |
+---------------+------------------------------+

Test User
+----------+---------------+
| Email | dev@localhost |
| Password | Password123! |
+----------+---------------+

RS256 JWT + PKCE

RSA-2048 asymmetric signing with automatic key generation and S256 PKCE for secure public clients

Multi-Tenant

Multiple organizations, users, and clients with full isolation

OIDC Compliant

Full OpenID Connect with discovery endpoints, JWKS, built-in login & consent UI. .NET 10 compatible.

Standard OAuth Endpoints

GET /.well-known/openid-configuration
POST /oauth/authorize
POST /oauth/token
GET /api/profile (userinfo)

Noundry.Authnz

NuGet package to integrate ANY OAuth IdP into your .NET app. Works with AuthnzNet locally or real providers in production.

5-Minute Integration

1

Install Package

dotnet add package Noundry.Authnz
2

Add Services

builder.Services.AddNoundryOAuth(config)
3

Use Middleware

app.UseNoundryOAuth()
using Noundry.Authnz.Extensions;

builder.Services.AddNoundryOAuth(config, options =>
{
 options.OnOAuthSuccess = async ctx =>
 {
 // Create local user account
 return new OAuthSuccessResult
 {
 AdditionalClaims = new List<Claim>
 {
 new("app_user_id", user.Id.ToString())
 }
 };
 };
});

app.UseNoundryOAuth();

AuthnzNet

Local

Google

Microsoft

GitHub

Apple

Custom

v1.3.0

OAuth Success Handling

Create local user accounts after OAuth success. No boilerplate "OAuthSuccess" catch pages.

OnOAuthSuccess delegate

Simple inline handler in Program.cs

IOAuthSuccessHandler interface

Full DI support for complex scenarios

New/Returning User Detection

Different handlers for onboarding vs login

Custom Claims Injection

Add user_id, roles, permissions to cookie

Setting Up OAuth Shouldn't Take Days

Install a dotnet tool, run quickstart, and you have a complete OAuth server. Free forever — no license fees, no usage limits.

$ dotnet tool install -g Noundry.AuthnzNet.CLI
$ dotnet add package Noundry.Authnz