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
<PackageReference Include="GrayMint.Authorization.Authentications" Version="3.2.156" />
<PackageVersion Include="GrayMint.Authorization.Authentications" Version="3.2.156" />
<PackageReference Include="GrayMint.Authorization.Authentications" />
paket add GrayMint.Authorization.Authentications --version 3.2.156
#r "nuget: GrayMint.Authorization.Authentications, 3.2.156"
#:package GrayMint.Authorization.Authentications@3.2.156
#addin nuget:?package=GrayMint.Authorization.Authentications&version=3.2.156
#tool nuget:?package=GrayMint.Authorization.Authentications&version=3.2.156
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:
IRoleProviderIUserProviderIResourceProvider
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 viasrc/Directory.Build.props.pub/PubVersion.jsonis 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 tomainbuilds, 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 | Versions 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. |
-
net10.0
- GrayMint.Authorization.Abstractions (>= 3.2.156)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.10)
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 |