session-based-access-control-pattern
Security pattern combining session authentication with authorization. Use when implementing web application security requiring both user authentication via session IDs and authorization checks for resource access. Combines Opaque token-based authentication with Authorisation pattern.
What this skill does
# Session-Based Access Control Security Pattern Combines session-based authentication (opaque tokens) with authorization. Subject is first authenticated via session ID, then authorized based on their principal's privileges before action execution. ## Core Components | Role | Type | Responsibility | |------|------|----------------| | **Subject** | Entity | Requests actions with session ID | | **Authentication Enforcer** | Enforcement Point | Verifies session ID | | **Verifier** | Decision Point | Validates session, retrieves principal | | **Session Manager** | Entity | Maintains open sessions | | **Session ID Generator** | Cryptographic Primitive | Generates secure session IDs | | **Authorisation Enforcer** | Enforcement Point | Checks action authorization | | **Decider** | Decision Point | Makes authorization decisions | | **Policy Provider** | Information Point | Manages access policies | ### Data Elements - **sessionId**: Opaque token identifying session - **principal**: Authenticated identity - **actionId**: Identifier for requested action - **objectId**: Identifier for target resource - **privileges**: Permissions granted to principal ## Combined Flow ``` Subject → [action + sessionId] → Auth Enforcer Auth Enforcer → [sessionId] → Verifier Verifier → [get_principal] → Session Manager Session Manager → [principal] → Verifier Verifier → [principal] → Auth Enforcer Auth Enforcer → [action + principal] → Authz Enforcer Authz Enforcer → [authorise(principal, actionId, objectId)] → Decider Decider → [get_privileges(principal)] → Policy Provider Policy Provider → [privileges] → Decider Decider → [allowed/denied] → Authz Enforcer Authz Enforcer → [action] → System (if allowed) ``` ### Step-by-Step 1. Subject sends request with session ID 2. Authentication Enforcer forwards session ID to Verifier 3. Verifier queries Session Manager for associated principal 4. If valid session, principal returned to Auth Enforcer 5. Auth Enforcer forwards request (with principal) to Authz Enforcer 6. Authz Enforcer extracts actionId and objectId from request 7. Decider queries Policy Provider for principal's privileges 8. Decider determines if action on object is permitted 9. If authorized, request forwarded to System ## Session Management ### Session Creation 1. Subject authenticates (e.g., password login) 2. Session Manager creates new session 3. Session ID Generator produces secure random ID 4. Session Manager stores sessionId→principal mapping 5. Session ID returned to Subject ### Session ID Requirements - Minimum 64 bits of entropy - Generate 128+ bits using CSPRNG - Check for duplicates before storing ### Session Lifetime - Idle timeout (configurable) - Absolute maximum duration - Invalidate on logout - Invalidate on credential change ## Authorization Model ### Privilege Determination - Policy Provider maintains access rules - Common models: RBAC, ABAC, ACL - Consider both action AND object in decisions ### Critical: Object-Level Authorization Always verify: - Principal can perform this action type - Principal can access this specific object **IDOR Prevention**: Never skip object-level checks; verify principal has access to the specific objectId. ## Security Considerations ### Authentication Layer - All session management best practices apply - See: Opaque token-based authentication pattern ### Authorization Layer - Default deny: reject unless explicitly allowed - Policy integrity: protect rules from tampering - Complete mediation: check every request ### Separation of Concerns - Authentication determines WHO - Authorization determines WHAT they can do - Both must pass for action to proceed ### Resource Protection - Auth and Authz enforcers on critical path - Potential DoS target—implement rate limiting - Consider caching for performance ### Session Data Security - If storing sensitive data in session, encrypt it - Minimize session data exposure ## Implementation Checklist - [ ] Secure session ID generation (128+ bits, CSPRNG) - [ ] Session timeout policies (idle + absolute) - [ ] New session ID on login - [ ] Session invalidation on logout - [ ] Authorization check on every request - [ ] Object-level authorization (IDOR prevention) - [ ] Default deny policy - [ ] Policy integrity protection - [ ] Rate limiting on enforcers ## Related Patterns - Opaque token-based authentication (session component) - Authorisation (access control component) - Limit request rate (DoS protection) ## References - Source: https://securitypatterns.distrinet-research.be/patterns/01_01_006__session_based_access_control/ - OWASP Session Management Cheat Sheet - OWASP Authorization Cheat Sheet
Related in Security
mac-ops
IncludedComprehensive macOS workstation operations — diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.