Skip to content
bitzorcas
EN

Reference

Identity module

Platform identity system — RBAC permission model with roles, modules, permissions, role-types, platform tenants, and CSV-based seed data management.

Last updated

BitzOrcas implements identity and access management through a role-based access control (RBAC) model backed by CSV seed data. Unlike traditional ASP.NET Identity approaches, BitzOrcas uses a lightweight custom identity system integrated with SqlSugar.

Permission model

PlatformTenant
RoleType (Admin, Operator, EndUser, etc.)
SysRole
SysRoleModulePermission (Role + Module + Permission → CRUD matrix)
SysModule → SysPermission

Core entities

EntityTablePurpose
PlatformTenantEntityplatform_tenantTenant registration (name, status, config)
SysRoleEntitysys_roleRole definitions per tenant
SysRoleTypeEntitysys_role_typeRole type catalog (Admin, Operator, etc.)
SysModuleEntitysys_modulePermission module catalog
SysPermissionEntitysys_permissionIndividual permission definitions
SysRoleModulePermissionEntitysys_role_module_permissionRole-permission mapping

Authorization decision service

BitzOrcas implements a multi-strategy authorization pipeline:

services.AddSingleton<IAuthorizationPolicyEvaluator, RbacPolicyEvaluator>();
services.AddSingleton<IAuthorizationPolicyEvaluator, AppScopePolicyEvaluator>();
services.AddSingleton<IAuthorizationPolicyEvaluator, AbacPolicyEvaluator>();
services.AddSingleton<IAuthorizationPolicyEvaluator, ReBacPolicyEvaluator>();
services.AddScoped<IAuthorizationDecisionService, AuthorizationDecisionService>();
EvaluatorStrategyDescription
RbacPolicyEvaluatorRole-BasedPermission checking via role assignments
AppScopePolicyEvaluatorApplication ScopeCross-tenant application-level permissions
AbacPolicyEvaluatorAttribute-BasedContext-aware policy evaluation
ReBacPolicyEvaluatorRelationship-BasedRelationship-graph based access

Seed data

Identity data is seeded from CSV files during --init-schema --seed-demo:

Seeders/Assets/Identity/
├── platform_tenant.csv → Default tenant registrations
├── sys_role.csv → Role definitions
├── sys_role_type.csv → Role type catalog
├── sys_module.csv → Permission module catalog
├── sys_permission.csv → Permission definitions
└── sys_role_module_permission.csv → Role-permission mappings

Each CSV uses SqlSugar’s Storageable upsert — safe to re-run.

Authentication schemes

Identity integrates with three authentication schemes (see Authentication):

SchemeCaller typeIdentity source
JWT BearerUser Calleruser_id, tenant_id, roles claims
HMACApplication Callerclient_id with TenantId
API KeyApplication Callerclient_id with TenantId, Scopes

Current user

The ICurrentUser interface provides identity information throughout the application:

// Populated from JWT claims by HttpContextCurrentUser
UserIdGuid
TenantIdstring
UserNamestring
RolesIEnumerable<string>

Impersonation (Delegation)

BitzOrcas supports operator impersonation through the Delegation subsystem:

  • DelegationTokenService — generates impersonation tokens
  • DelegationGrantEntity — stores grant records
  • DelegationTokenMiddleware — validates delegation tokens in request pipeline
  • Grants have configurable TTL and scope restrictions

Data scope resolver

public interface IDataScopeResolver
{
DataScope Resolve(ICurrentUser user, string resourceTenantId);
}
public enum DataScope
{
Own, // Own data only
Tenant, // All data in tenant
CrossTenant // Cross-tenant (admin/superuser)
}

See also