GrayMint.Authorization.MicroserviceAuthorization 3.2.157

dotnet add package GrayMint.Authorization.MicroserviceAuthorization --version 3.2.157
                    
NuGet\Install-Package GrayMint.Authorization.MicroserviceAuthorization -Version 3.2.157
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GrayMint.Authorization.MicroserviceAuthorization" Version="3.2.157" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GrayMint.Authorization.MicroserviceAuthorization" Version="3.2.157" />
                    
Directory.Packages.props
<PackageReference Include="GrayMint.Authorization.MicroserviceAuthorization" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GrayMint.Authorization.MicroserviceAuthorization --version 3.2.157
                    
#r "nuget: GrayMint.Authorization.MicroserviceAuthorization, 3.2.157"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package GrayMint.Authorization.MicroserviceAuthorization@3.2.157
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=GrayMint.Authorization.MicroserviceAuthorization&version=3.2.157
                    
Install as a Cake Addin
#tool nuget:?package=GrayMint.Authorization.MicroserviceAuthorization&version=3.2.157
                    
Install as a Cake Tool

GrayMint.Authorization

Modular B2B Authorization Framework for .NET Applications

GrayMint.Authorization provides a flexible, multi-tenant-compatible B2B authorization framework for .NET apps. It enables role-based and resource-based access control, ideal for enterprise platforms, SaaS systems, and microservices.


๐Ÿ”ง Features

  • Role-based and resource-based authorization
  • Multi-tenant (B2B) ready
  • Modular service registration and layering
  • Microservice-compatible with extensible providers
  • EF Core-based persistence support
  • Built-in controllers and services for quick bootstrap

๐Ÿ“ฆ Installation

Install the packages from nuget.org:

dotnet add package GrayMint.Authorization

๐Ÿš€ Getting Started

1. Configure App Settings

  • Issuer: The issuer of the tokens.
  • Audience: The audience of the tokens.
  • Secret: The secret key for token generation.
  • Secrets: List of additional secret keys.
  • CacheTimeout: The cache timeout duration.
  • AllowUserSelfRegister: Boolean flag to allow or disallow user self-registration.
  • AllowUserApiKey: Boolean flag to allow or disallow user API keys.
  • AllowRefreshToken: Boolean flag to allow or disallow refresh tokens.
  • SignInRedirectUrl: The URL to redirect to after sign-in.
  • OpenIdProviders: List of OpenID providers with their respective configurations.

2. Service Registration (from Sample Web API)

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;

// Load options
var appOptions = builder.Configuration.GetSection("App").Get<AppOptions>();
services.Configure<AppOptions>(builder.Configuration.GetSection("App"));

// Register shared services and Swagger
services
    .AddGrayMintCommonServices();

// Register Authorization and Roles
builder.AddGrayMintCommonAuthorizationForApp(
    GmRole.GetAll(typeof(Roles)),
    options => options.UseSqlServer(builder.Configuration.GetConnectionString("AppDatabase")));

// Optional: Register Resource Provider
if (appOptions.UseResourceProvider)
    services.AddGrayMintResourceProvider(
        new ResourceProviderOptions(),
        options => options.UseSqlServer(builder.Configuration.GetConnectionString("AppDatabase")));

// Add EF Core & domain services
services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("AppDatabase")));
services.AddItemServices();

3. Middleware & Execution

var webApp = builder.Build();
webApp.UseGrayMintCommonServices();
await webApp.UseGrayMinCommonAuthorizationForApp();
await webApp.Services.UseGrayMintDatabaseCommand<AppDbContext>(args);

if (appOptions.UseResourceProvider)
    await webApp.Services.UseGrayMintResourceProvider();

await GrayMintApp.RunAsync(webApp, args);

๐Ÿงช Permission Check Example

    [HttpGet("itemId/by-role")]
    [Authorize("DefaultPolicy", Roles = ["SystemAdmin", "SystemReader"])
    public Task<Item> GetByRole(int appId, int itemId)
    {
        return itemService.Get(appId, itemId);
    }

    [HttpPost("by-permission")]
    [AuthorizeAppIdPermission(Permissions.AppWrite)]
    public Task<Item> CreateByPermission(int appId, ItemCreateRequest? createRequest = null)
    {
        return itemService.Create(appId, createRequest);
    }

๐Ÿงฉ Extending

Implement custom providers:

  • IRoleProvider
  • IUserProvider
  • IResourceProvider

These interfaces allow full control over how roles, users, and resources are managed.


๐Ÿ— Repo layout & CI

  • src/ โ€” the packable libraries; one shared version and package metadata via src/Directory.Build.props. pub/PubVersion.json is the version source of truth.
  • tests/ โ€” test suites and sample hosts. Never packed.
  • .github/workflows/ โ€” thin wrappers over the reusable CI in GrayMint.Common: every push to main builds, tests, bumps the version, and publishes to nuget.org; a daily job (02:30 UTC, right after GrayMint.Common's own update) upgrades all NuGet dependencies and republishes when tests pass. Nothing ships when tests fail.

Build locally:

dotnet build GrayMint.Authorization.slnx
dotnet test GrayMint.Authorization.slnx

๐Ÿ“„ License

Licensed under the MIT License.

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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.157 0 7/21/2026
3.2.156 30 7/18/2026
3.2.155 38 7/18/2026
3.2.154 36 7/18/2026
3.1.151 45 7/17/2026
3.1.150 104 7/7/2026
3.1.149 109 6/23/2026
3.1.148 105 5/7/2026
3.1.147 106 5/7/2026
3.1.146 99 5/7/2026
3.1.145 124 2/3/2026
3.1.144 124 2/3/2026
3.1.143 209 12/13/2025
3.1.142 175 11/16/2025
3.1.141 203 11/15/2025
3.0.140 227 11/3/2025
3.0.139 221 11/3/2025
3.0.138 229 11/3/2025
3.0.137 239 11/3/2025
3.0.136 210 11/2/2025
Loading failed