GrayMint.Authorization.Authentications 3.2.156

dotnet add package GrayMint.Authorization.Authentications --version 3.2.156
                    
NuGet\Install-Package GrayMint.Authorization.Authentications -Version 3.2.156
                    
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.Authentications" Version="3.2.156" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GrayMint.Authorization.Authentications" Version="3.2.156" />
                    
Directory.Packages.props
<PackageReference Include="GrayMint.Authorization.Authentications" />
                    
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.Authentications --version 3.2.156
                    
#r "nuget: GrayMint.Authorization.Authentications, 3.2.156"
                    
#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.Authentications@3.2.156
                    
#: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.Authentications&version=3.2.156
                    
Install as a Cake Addin
#tool nuget:?package=GrayMint.Authorization.Authentications&version=3.2.156
                    
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 (4)

Showing the top 4 NuGet packages that depend on GrayMint.Authorization.Authentications:

Package Downloads
GrayMint.Authorization

Reference all GrayMint authorization.

GrayMint.Authorization.RoleManagement.TeamControllers

Package Description

GrayMint.Authorization.Authentications.Controllers

Package Description

GrayMint.Authorization.MicroserviceAuthorization

GrayMint Authorization for microservices

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.156 41 7/18/2026
3.2.155 47 7/18/2026
3.2.154 48 7/18/2026
3.1.151 59 7/17/2026
3.1.150 144 7/7/2026
3.1.149 208 6/23/2026
3.1.148 373 5/7/2026
3.1.147 151 5/7/2026
3.1.146 145 5/7/2026
3.1.145 758 2/3/2026
3.1.144 156 2/3/2026
3.1.143 314 12/13/2025
3.1.142 232 11/16/2025
3.1.141 246 11/15/2025
3.0.140 306 11/3/2025
3.0.139 299 11/3/2025
3.0.138 303 11/3/2025
3.0.137 303 11/3/2025
3.0.136 303 11/2/2025
3.0.134 1,123 8/14/2025
Loading failed