Raycynix.Extensions.Security.AspNetCore
2.2.0
dotnet add package Raycynix.Extensions.Security.AspNetCore --version 2.2.0
NuGet\Install-Package Raycynix.Extensions.Security.AspNetCore -Version 2.2.0
<PackageReference Include="Raycynix.Extensions.Security.AspNetCore" Version="2.2.0" />
<PackageVersion Include="Raycynix.Extensions.Security.AspNetCore" Version="2.2.0" />
<PackageReference Include="Raycynix.Extensions.Security.AspNetCore" />
paket add Raycynix.Extensions.Security.AspNetCore --version 2.2.0
#r "nuget: Raycynix.Extensions.Security.AspNetCore, 2.2.0"
#:package Raycynix.Extensions.Security.AspNetCore@2.2.0
#addin nuget:?package=Raycynix.Extensions.Security.AspNetCore&version=2.2.0
#tool nuget:?package=Raycynix.Extensions.Security.AspNetCore&version=2.2.0
Raycynix.Extensions.Security.AspNetCore
Raycynix.Extensions.Security.AspNetCore adds ASP.NET Core JWT authentication, dynamic authorization policies, and shared authorization-attribute integration for Raycynix security.
What it contains
AddRaycynixAspNetCoreSecurity(...)UseRaycynixSecurity(this IApplicationBuilder app)- per-request
ClaimsPrincipaltoISecurityContextmapping - dynamic API policies for
authenticated,permission:*,role:*, andsubject:* - MVC convention support for shared security attributes from
Raycynix.Extensions.Security.Abstractions - endpoint-builder helpers through
RequireRaycynixAuthorization(...) - consistent
401 Unauthorizedand403 ForbiddenJSON responses
Usage
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRaycynixAspNetCoreSecurity(builder.Configuration, options =>
{
options.Jwt.Authority = "https://auth.raycynix.com";
options.Jwt.Issuer = "raycynix-auth";
options.Jwt.Audience = "raycynix-services";
});
var app = builder.Build();
app.UseRaycynixSecurity();
app.Run();
{
"SecurityConfiguration": {
"Jwt": {
"Authority": "https://auth.raycynix.com",
"Issuer": "raycynix-auth",
"Audience": "raycynix-services",
"RequireHttpsMetadata": true
}
}
}
Use authorization policies with standard names:
using Raycynix.Extensions.Security.AspNetCore.Authorization;
[Authorize(Policy = SecurityPolicies.Permission("users.read"))]
[Authorize(Policy = SecurityPolicies.AnyPermission("users.read", "users.write"))]
[Authorize(Policy = SecurityPolicies.AllPermissions("users.read", "users.export"))]
[Authorize(Policy = SecurityPolicies.Role("admin"))]
[Authorize(Policy = SecurityPolicies.AnyRole("admin", "support"))]
[Authorize(Policy = SecurityPolicies.AllRoles("manager", "auditor"))]
[Authorize(Policy = SecurityPolicies.Authenticated)]
[Authorize(Policy = SecurityPolicies.ServiceOnly)]
Or use the shared security attributes and let the package translate them into standard ASP.NET Core authorization policies:
using Raycynix.Extensions.Security.Abstractions.Attributes;
[RequireAuthenticatedSubject]
[RequireSubjectType(SecuritySubjectType.Service)]
[RequirePermission("users.read")]
public sealed class UsersController : ControllerBase
{
}
For minimal APIs or endpoint builders, use the helper extension:
app.MapGet("/users/{id}", HandleUserAsync)
.RequireRaycynixAuthorization(
new RequireAuthenticatedSubjectAttribute(),
new RequirePermissionAttribute("users.read"));
The package expects JWT access tokens with:
subsubject_typerolespermissions
subject_type is mapped to SecuritySubjectType, allowing both User and Service request subjects to use the same ISecurityContext.
Authentication and authorization failures return safe JSON responses without exposing internal policy details.
Logging
The ASP.NET Core package uses optional Microsoft ILogger<T> diagnostics when logging is registered in the application. No Raycynix logging provider is required.
Diagnostics cover JWT challenges, request security context mapping, dynamic policy resolution, authorization requirement outcomes, and generated 401/403 responses. Access tokens, subject identifiers, claim values, role names, permission names, and raw policy names are not logged.
| 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
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.9)
- Microsoft.IdentityModel.Abstractions (>= 8.19.1)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.19.1)
- Microsoft.IdentityModel.Protocols (>= 8.19.1)
- Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.19.1)
- Raycynix.Extensions.Security (>= 2.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Starts unified versioning for Raycynix packages from this release and adds optional Microsoft.Extensions.Logging diagnostics for authentication and authorization flows.