Noundry.AuthnzNet.CLI 1.9.0

dotnet tool install --global Noundry.AuthnzNet.CLI --version 1.9.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Noundry.AuthnzNet.CLI --version 1.9.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Noundry.AuthnzNet.CLI&version=1.9.0
                    
nuke :add-package Noundry.AuthnzNet.CLI --version 1.9.0
                    

AuthnzNet

Local OAuth 2.0 / OpenID Connect server for development.

Stop wasting time setting up IdentityServer or waiting for cloud IdP trial approvals. Get OAuth working in your app in under 60 seconds.

Quick Start

# Install the CLI
dotnet tool install -g Noundry.AuthnzNet.CLI

# Create everything you need in one command
ndaz quickstart

# Start the server
ndaz serve

That's it. Your app now has OAuth.

What You Get

After ndaz quickstart:

OAuth Configuration
┌───────────────┬─────────────────────────────────────────────┐
│ Authority     │ https://localhost:5000                      │
│ Client ID     │ client_4d47e486494d4ab68                    │
│ Client Secret │ 1IHI0Wvw1cQQuEJAnsNciWR1mTSfxWJY            │
│ Login URL     │ https://localhost:5000/login/local-dev-4f31 │
└───────────────┴─────────────────────────────────────────────┘

Test User
┌──────────┬───────────────┐
│ Email    │ dev@localhost │
│ Password │ Password123!  │
└──────────┴───────────────┘

Configure Your App

ASP.NET Core

builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "https://localhost:5000";
    options.ClientId = "YOUR_CLIENT_ID";
    options.ClientSecret = "YOUR_CLIENT_SECRET";
    options.ResponseType = "code";
    options.SaveTokens = true;
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    options.Scope.Add("email");
});

React / SPA (PKCE)

const config = {
  authority: "https://localhost:5000",
  client_id: "YOUR_CLIENT_ID",
  redirect_uri: "http://localhost:3000/callback",
  response_type: "code",
  scope: "openid profile email",
};

appsettings.json

{
  "Authentication": {
    "Authority": "https://localhost:5000",
    "ClientId": "YOUR_CLIENT_ID",
    "ClientSecret": "YOUR_CLIENT_SECRET"
  }
}

OAuth Endpoints

Endpoint URL
OIDC Discovery /.well-known/openid-configuration
Authorize /oauth/authorize
Token /oauth/token
UserInfo /api/profile
JWKS /.well-known/jwks.json

Supported Flows

  • Authorization Code (with PKCE)
  • Client Credentials
  • Refresh Token
  • Resource Owner Password

CLI Commands

ndaz quickstart              # Create tenant + client + user
ndaz serve                   # Start server
ndaz serve --port 8080       # Custom port
ndaz tenant register <email> <name>  # New tenant
ndaz client create <tenant-id>       # New OAuth client
ndaz user create <tenant-id> <email> <password>  # New user

Dashboard

Visit https://localhost:5000/dashboard to manage tenants, users, and clients.

Switching to Production

When ready for production, change one line:

// Development
options.Authority = "https://localhost:5000";

// Production
options.Authority = "https://login.microsoftonline.com/...";  // Azure AD
// or
options.Authority = "https://your-tenant.auth0.com";          // Auth0
// or
options.Authority = "https://accounts.google.com";            // Google

No other code changes needed.

Why AuthnzNet?

Problem AuthnzNet Solution
"I need to test OAuth but don't want to set up IdentityServer" ndaz quickstart && ndaz serve
"I'm offline and can't reach my cloud IdP" Works 100% locally
"I don't want to register apps with Google/Microsoft for dev" No external accounts needed
"I need to test multiple users/tenants" Multi-tenant built-in
"My team needs a shared test IdP" Deploy the same server anywhere

Project Structure

AuthnzNet/
├── src/
│   ├── AuthnzNet.Core/      # Shared models & interfaces
│   ├── AuthnzNet.Cli/       # CLI tool (ndaz)
│   └── AuthnzNet.Server/    # OAuth server (single process, SQLite)
├── tests/
│   ├── AuthnzNet.Core.Tests/
│   └── AuthnzNet.Cli.Tests/
└── cloud/                   # (Future cloud service code)

Requirements

  • .NET 9.0 SDK or .NET 10.0 SDK

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.9.0 0 3/4/2026