MinimalApi.Identity.API
1.0.86
See the version list below for details.
dotnet add package MinimalApi.Identity.API --version 1.0.86
NuGet\Install-Package MinimalApi.Identity.API -Version 1.0.86
<PackageReference Include="MinimalApi.Identity.API" Version="1.0.86" />
<PackageVersion Include="MinimalApi.Identity.API" Version="1.0.86" />
<PackageReference Include="MinimalApi.Identity.API" />
paket add MinimalApi.Identity.API --version 1.0.86
#r "nuget: MinimalApi.Identity.API, 1.0.86"
#:package MinimalApi.Identity.API@1.0.86
#addin nuget:?package=MinimalApi.Identity.API&version=1.0.86
#tool nuget:?package=MinimalApi.Identity.API&version=1.0.86
Packages MinimalApi Identity API
Library for dynamically managing users, roles, claims, modules and license, using .NET 8 Minimal API, Entity Framework Core and SQL Server.
I created this library in order to avoid duplication of repetitive code whenever I implement Asp.Net Core Identity as an authentication and authorization provider
The MinimalApi.Identity.API library used in this sample project, is still under development of new implementations.
🏗️ ToDo
- Add endpoints to manage claims (with possible deletion only if the data is not default)
- Add endpoints to manage users
- Add endpoints to impersonate the user
- Add endpoints to manage user disablement
- Add endpoints to handle user password change every X days
- Add endpoints to handle refresh token (currently generated, but not usable)
- Add endpoints for two-factor authentication
- Add endpoint for forgotten password recovery
- Add endpoint for password change
- Add endpoints for two-factor authentication management
- Add endpoints for downloading and deleting personal data
- Add API documentation
🛠️ Installation
The library is available on NuGet. Just search for MinimalApi.Identity.API in the Package Manager GUI or run the following command in the .NET CLI:
dotnet add package MinimalApi.Identity.API
🚀 Configuration
Adding this sections in the appsettings.json file:
{
"Kestrel": {
"Limits": {
"MaxRequestBodySize": 5242880
}
},
"JwtOptions": {
"Issuer": "[ISSUER]",
"Audience": "[AUDIENCE]",
"SecurityKey": "[SECURITY-KEY]",
},
"NetIdentityOptions": {
"RequireUniqueEmail": true,
"RequireDigit": true,
"RequiredLength": 8,
"RequireUppercase": true,
"RequireLowercase": true,
"RequireNonAlphanumeric": true,
"RequiredUniqueChars": 4,
"RequireConfirmedEmail": true,
"MaxFailedAccessAttempts": 3,
"AllowedForNewUsers": true,
"DefaultLockoutTimeSpan": "00:05:00"
},
"SmtpOptions": {
"Host": "smtp.example.org",
"Port": 25,
"Security": "StartTls",
"Username": "Username del server SMTP",
"Password": "Password del server SMTP",
"Sender": "MyApplication <noreply@example.org>",
"SaveEmailSent": false
},
"UsersOptions": {
"AssignAdminRoleOnRegistration": "admin@example.org"
},
"ConnectionStrings": {
"DefaultConnection": "Data Source=[HOSTNAME];Initial Catalog=[DATABASE];User ID=[USERNAME];Password=[PASSWORD];Encrypt=False"
}
}
Note: If SaveEmailSent is false, only emails that failed while sending will be saved, if SaveEmailSent is true, both emails that were sent successfully and emails that failed will be saved
Registering services at Program.cs file:
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetDatabaseConnString("DefaultConnection");
var jwtOptions = builder.Configuration.GetSettingsOptions<JwtOptions>(nameof(JwtOptions));
var identityOptions = builder.Configuration.GetSettingsOptions<NetIdentityOptions>(nameof(NetIdentityOptions));
var smtpOptions = builder.Configuration.GetSettingsOptions<SmtpOptions>(nameof(SmtpOptions));
builder.Services.AddCors(options => options.AddPolicy("cors", builder
=> builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
builder.Services.AddRegisterServices<Program>(builder.Configuration, connectionString, jwtOptions, identityOptions);
builder.Services.AddAuthorization(options =>
{
// Adds default authorization policies
options.AddDefaultAuthorizationPolicy();
// Here you can add additional authorization policies
});
var app = builder.Build();
//If you need to add more exceptions you need to add the ExtendedExceptionMiddleware middleware.
//In the demo project, in the Middleware folder, you can find an implementation example.
app.UseMiddleware<ExtendedExceptionMiddleware>();
//Otherwise you can add this middleware MinimalApiExceptionMiddleware to your pipeline that handles exceptions from this library.
//app.UseMiddleware<MinimalApiExceptionMiddleware>();
app.UseRouting();
if (app.Environment.IsDevelopment())
{
app.UseSwagger().UseSwaggerUI();
}
app.UseCors("cors");
app.UseAuthentication();
app.UseAuthorization();
app.UseMapEndpoints();
app.Run();
📚 Demo
You can find a sample project in the example project.
📦 Dependencies
- .NET8
- ASP.NET Core Identity
- Entity Framework Core
- Entity Framework Core for SQL Server
- JWT Bearer
- MailKit
- Scrutor
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
⭐ Give a Star
If you find this project useful, please give it a ⭐ on GitHub to show your support and help others discover it!
🤝 Contributing
Suggestions are always welcome! Feel free to open suggestion issues in the repository and we will implement them as possible.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- FluentValidation.DependencyInjectionExtensions (>= 11.11.0)
- MailKit (>= 4.11.0)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 8.0.14)
- Microsoft.AspNetCore.Identity.EntityFrameworkCore (>= 8.0.14)
- Microsoft.AspNetCore.OpenApi (>= 8.0.14)
- Microsoft.EntityFrameworkCore (>= 9.0.3)
- Microsoft.EntityFrameworkCore.SqlServer (>= 9.0.3)
- Scrutor (>= 6.0.1)
- Swashbuckle.AspNetCore (>= 8.0.0)
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 | |
---|---|---|---|
1.0.246 | 350 | 7/10/2025 |