cCoder.AppSecurity
2026.9.9.859
dotnet add package cCoder.AppSecurity --version 2026.9.9.859
NuGet\Install-Package cCoder.AppSecurity -Version 2026.9.9.859
<PackageReference Include="cCoder.AppSecurity" Version="2026.9.9.859" />
<PackageVersion Include="cCoder.AppSecurity" Version="2026.9.9.859" />
<PackageReference Include="cCoder.AppSecurity" />
paket add cCoder.AppSecurity --version 2026.9.9.859
#r "nuget: cCoder.AppSecurity, 2026.9.9.859"
#:package cCoder.AppSecurity@2026.9.9.859
#addin nuget:?package=cCoder.AppSecurity&version=2026.9.9.859
#tool nuget:?package=cCoder.AppSecurity&version=2026.9.9.859
cCoder.AppSecurity
View the latest code coverage report
cCoder.AppSecurity contains the App Security domain for the cCoder platform.
It owns application-level users, roles, privileges, and user-role links. SSO users and account tokens remain owned by cCoder.Security.
Local Configuration
Every executable host binds the complete configuration root into an
AppConfiguration containing AppSecurity, CoreData, Security, and
SecurityData. cCoder.AppSecurity owns business behavior only;
cCoder.Data and cCoder.Security.Data own their respective persistence
configuration and registration.
Leave secrets empty in appsettings and define CoreData__ConnectionString,
SecurityData__ConnectionString, and Security__DecryptionKey as user-level
or machine-level environment variables. Restart Visual Studio, select the Web
and HostedServices startup projects, and press F5.
Contents
src/cCoder.AppSecurityThe main library package published to NuGet.src/AppSecurity.WebThe public API host for the App Security domain.src/AppSecurity.HostedServicesThe background/event host for App Security maintenance and event handlers.src/cCoder.AppSecurity.TestsUnit tests for the domain.src/AppSecurity.AcceptanceTestsAcceptance tests for the Web host.src/AppSecurity.HostedServices.AcceptanceTestsAcceptance tests for the Hosted Services host.
Responsibilities
AppSecurity creates and maintains app-local security state:
- Apps and app domains.
- App users.
- Roles and privileges.
- User-role links.
- App usage analysis hosted service.
- App-local cleanup driven by app delete events.
AppSecurity consumes cCoder.Security account lifecycle events, resolves the target app from the event request domain, and creates or updates the related app-local user and default role links. It does not send account emails and does not own SSO users or tokens.
Security account events consumed:
security_account_registration_createdsecurity_account_registration_confirmedsecurity_account_invitation_createdsecurity_account_invitation_acceptedsecurity_account_password_reset_requested
Build
dotnet build src/cCoder.AppSecurity.slnx -v minimal
Test
dotnet test src/cCoder.AppSecurity.slnx -v minimal --no-build
Local Configuration
The runnable hosts read local secrets from environment variables rather than committed config.
Before running src/AppSecurity.Web or src/AppSecurity.HostedServices, set:
CoreData__ConnectionStringSecurityData__ConnectionStringSecurity__DecryptionKey
Optional migration-only overrides:
CoreData__AdminConnectionStringSecurityData__AdminConnectionString
The committed appsettings.json keeps these values blank so user or machine environment variables can supply them during local development.
AppSecurity.Web exposes /Health, the App Security API endpoints, and a small manual test UI at /.
AppSecurity.HostedServices exposes /Health plus /, which returns a plain-text report of hosted background services and event listeners.
Standalone hosts compose storage and business domains side by side:
services.AddData(configuration.CoreData);
services.AddSecurityData(configuration.SecurityData);
services.AddSecurityWeb(configuration.Security);
services.AddAppSecurityWeb(configuration.AppSecurity);
Applications that consume cCoder.Core should use Core's composite API instead;
Core deliberately composes all configured domains and their Data dependencies.
When testing against a local cCoder.Security checkout, pass:
dotnet test src/cCoder.AppSecurity.slnx -v minimal /p:UseLocalSecurity=true
Package
The NuGet package produced by this repository is:
cCoder.AppSecurity
Publishing
GitHub Actions is configured to publish the main package using NuGet trusted publishing.
Before the first publish, configure a trusted publishing policy on nuget.org for:
- Repository owner:
ccoder-co-uk - Repository:
cCoder.AppSecurity - Workflow file:
publish.yml
The workflow also expects a NUGET_USER repository secret containing the nuget.org profile name used during trusted publishing login.
| 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
- cCoder.Data (>= 2026.8.28.1700)
- cCoder.Eventing (>= 2026.8.27.1708)
- cCoder.Security (>= 2026.8.28.1335)
- cCoder.Security.Data (>= 2026.8.28.1335)
- Microsoft.AspNetCore.OData (>= 9.5.0)
- Microsoft.EntityFrameworkCore (>= 10.0.11)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.11)
- Swashbuckle.AspNetCore.SwaggerGen (>= 10.2.3)
- System.Linq.Dynamic.Core (>= 1.7.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on cCoder.AppSecurity:
| Package | Downloads |
|---|---|
|
cCoder.Core
cCoder.Core |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.9.9.859 | 78 | 9/9/2026 |
| 2026.9.8.2220 | 73 | 9/8/2026 |
| 2026.8.28.1718 | 176 | 8/28/2026 |
| 2026.8.27.1757 | 125 | 8/27/2026 |
| 2026.8.26.2237 | 140 | 8/26/2026 |
| 2026.8.26.1400 | 94 | 8/26/2026 |
| 2026.8.26.1251 | 103 | 8/26/2026 |
| 2026.8.20.1637 | 138 | 8/20/2026 |
| 2026.8.12.1556 | 122 | 8/12/2026 |
| 2026.8.11.1949 | 184 | 8/11/2026 |
| 2026.8.10.1850 | 106 | 8/10/2026 |
| 2026.8.10.1714 | 124 | 8/10/2026 |
| 2026.8.10.1344 | 94 | 8/10/2026 |
| 2026.8.10.1338 | 86 | 8/10/2026 |
| 2026.8.10.1327 | 95 | 8/10/2026 |
| 2026.8.8.1554 | 102 | 8/8/2026 |
| 2026.8.5.123 | 254 | 8/5/2026 |
| 2026.8.4.2155 | 148 | 8/4/2026 |
| 2026.8.4.2137 | 109 | 8/4/2026 |
| 2026.8.4.2122 | 104 | 8/4/2026 |