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

A full OAuth 2.0 / OpenID Connect server you run locally. Identity Server replacement for dev.

$ ndaz quickstart
$ ndaz serve
  • - No external dependencies
  • - No API keys needed
  • - Works offline
  • - Multi-tenant support

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

A local OAuth 2.0 server you control. Identity Server replacement for development.

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!  |
+----------+---------------+

All OAuth Flows

Authorization Code, Client Credentials, Password, Refresh Token

Multi-Tenant

Multiple organizations, users, and clients with full isolation

Dashboard + CLI

Web UI at localhost:5000/dashboard or use the ndaz CLI

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 OAuthSuccessResult.WithClaims(
            new Claim("user_id", user.Id)
        );
    };
});

app.UseNoundryOAuth();

AuthnzNet

Local

Google

Microsoft

GitHub

Apple

Custom

v1.2.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

Ready to Simplify OAuth?

Stop fighting with Identity Server. Test OAuth locally in 60 seconds.

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