GrayMint.Authorization.MicroserviceAuthorization
3.2.154
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package GrayMint.Authorization.MicroserviceAuthorization --version 3.2.154
NuGet\Install-Package GrayMint.Authorization.MicroserviceAuthorization -Version 3.2.154
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.154" />
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.154" />
<PackageReference Include="GrayMint.Authorization.MicroserviceAuthorization" />
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.154
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: GrayMint.Authorization.MicroserviceAuthorization, 3.2.154"
#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.154
#: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.154
#tool nuget:?package=GrayMint.Authorization.MicroserviceAuthorization&version=3.2.154
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- GrayMint.Authorization.Abstractions (>= 3.2.154)
- GrayMint.Authorization.Authentications (>= 3.2.154)
- GrayMint.Authorization.PermissionAuthorizations (>= 3.2.154)
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 | 41 | 7/21/2026 |
| 3.2.156 | 50 | 7/18/2026 |
| 3.2.155 | 57 | 7/18/2026 |
| 3.2.154 | 54 | 7/18/2026 |
| 3.1.151 | 63 | 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