Access Control
Authentication, authorization, session lifecycle, and request-scoped authority decisions — the decision layer of "who can do what".
The decision layer: "should this caller be allowed to perform this action?"
In scope. Authentication mechanisms (password, MFA, social, OAuth, API keys, service-to-service), authorization decisions (RBAC, ABAC, ownership checks, tenant scoping of requests), session lifecycle (creation, expiry, rotation, revocation, fixation), request-level authority gates on protected routes and mutations, step-up authentication, and auth-bypass patterns (debug paths, environment-conditional skips).
Not in scope. Credential storage, hashing, and the cryptographic material itself — those are cryptography-and-secrets. Per-record tenant isolation at the persistence layer — that's data-integrity. Submitted-input validation that happens before an auth decision — that's injection-and-input-trust.
Distinct because. Access control is the decision layer. cryptography-and-secrets is the material layer (keys, hashes, certs). data-integrity is the storage layer. A pattern about "admin route lacks role check" is access-control; a pattern about "password hashed with MD5" is cryptography-and-secrets; a pattern about "query missing tenant_id filter" is data-integrity.
Conceptual sub-structure. Authentication (proving identity), authorization (deciding permissions), session (lifecycle of the authenticated state), tenant-scoping (request-level multi-tenant boundaries). Formal sub-taxon paths may be introduced when any one sub-area exceeds ~500 patterns.
Patterns in this taxon (259)
- high3D Secure (SCA) flow is implemented and handled correctlyab-001162 · ecommerce-payment-security
- infoA periodic access-review procedure is documented in the repoab-002628 · soc2-readiness
- highAbsolute timeout max 8 hours regardless of activityab-001458 · finserv-session-security
- mediumAbuse reporting is anonymous and safeab-000713 · community-moderation-safety
- highAccount lockout after repeated failed login attemptsab-002375 · security-hardening
- highAccount lockout is implemented after failed attemptsab-002230 · saas-authentication
- highactiveTab is prioritized over static permissionsab-001321 · extension-permissions-security
- lowActivity status can be disabled; excluded from API responses when offab-000731 · community-privacy-controls
- mediumAdditional browser APIs restrictedab-002446 · security-headers-ii
- mediumAddress Verification System (AVS) checks are enabledab-001167 · ecommerce-payment-security
- lowAdmin can view but not modify tenant data without an audit trailab-002352 · saas-multi-tenancy
- criticalAdmin Routes Protected with Role Checkab-002270 · saas-authorization
- mediumAge gate cannot be trivially bypassed by refreshing, clearing cookies, etc.ab-000816 · coppa-compliance
- criticalAll API endpoints require authenticationab-000376 · api-security
- infoAPI documentation accessible only to authorized usersab-000398 · api-security
- highAPI Keys Have Scoped Permissionsab-002237 · saas-authorization
- highAPI keys scoped to minimum permissionsab-001261 · environment-security
- lowAPI Rate Limits Differentiated by Roleab-002271 · saas-authorization
- criticalApp requests only necessary permissionsab-001892 · mobile-permissions-privacy
- criticalAt most one auth library wired upab-000218 · ai-slop-code-drift
- lowAudit logging of failed payment attempts for security monitoringab-001174 · ecommerce-payment-security
- lowAudit logs are tenant-scopedab-002342 · saas-multi-tenancy
- mediumAuth error messages do not reveal whether email existsab-002225 · saas-authentication
- criticalAuth middleware protects all private routesab-002231 · saas-authentication
- mediumAuth state is not stored in localStorageab-002208 · saas-authentication
- highAuth tokens are not passed in URL parametersab-002210 · saas-authentication
- highAuthenticated submission enforced or incentivized; anonymous submissions without anti-spam controls flaggedab-001085 · directory-submissions-moderation
- criticalAuthentication required on non-public endpointsab-002195 · saas-api-design
- highAuthentication tokens have a defined expiration timeab-000378 · api-security
- criticalAuthentication tokens stored securely, not exposed in localStorageab-001301 · extension-data-privacy
- criticalAuthorization enforces object-level access controlab-000377 · api-security
- mediumAuthorization Failures Return 403ab-002239 · saas-authorization
- lowAuthorization Logic Centralizedab-002248 · saas-authorization
- highAuthorization Model Definedab-002245 · saas-authorization
- mediumBackground jobs are scoped to a single tenantab-002317 · saas-multi-tenancy
- mediumBiometric authentication uses LocalAuthentication APIab-001908 · mobile-permissions-privacy
- lowBiometric step-up accepted without secondary OTP for single-deviceab-001467 · finserv-session-security
- criticalBlock/Mute Filtering in Feedsab-000766 · community-social-engagement
- mediumBulk Operations Verify Per-Resource Permissionsab-002240 · saas-authorization
- highCache keys include the tenant identifierab-002320 · saas-multi-tenancy
- highCancellation flow is completeab-002275 · saas-billing
- highCAPTCHA or rate limiting prevents bot postsab-000705 · community-moderation-safety
- criticalChannel authorization re-validated on subscribe, not only at initial handshakeab-000739 · community-realtime
- highClaimed listings show Verified Owner badge set server-side onlyab-001087 · directory-submissions-moderation
- highClear-Site-Data header on logoutab-002439 · security-headers-ii
- highCommunications monitored and controlled at system boundariesab-001563 · gov-cmmc-level-1
- highConcurrent sessions limited to 1, warning on new loginab-001469 · finserv-session-security
- highContent scripts run in isolated worldsab-001330 · extension-permissions-security
- mediumCookies have appropriate SameSite attributeab-000004 · security-headers
- highCore security response headers are configuredab-002615 · project-snapshot
- lowCorrections/reversals logged separately with approval chainab-001394 · finserv-audit-trail
- lowCORS configuration is restrictiveab-002395 · security-hardening
- infoCORS headers are explicitly configuredab-000012 · security-headers
- mediumCORS headers configured with specific allowed originsab-000383 · api-security
- mediumCORS is explicitly configured (not relying on framework defaults)ab-000282 · ai-slop-security-theater
- highCORS properly configuredab-002194 · saas-api-design
- mediumCross-Origin-Embedder-Policy configuredab-002437 · security-headers-ii
- mediumCross-Origin-Opener-Policy header is setab-002436 · security-headers-ii
- mediumCross-Origin-Resource-Policy on static assetsab-002432 · security-headers-ii
- highCross-tenant resource access is blockedab-002316 · saas-multi-tenancy
- highCSRF protection imported is actually appliedab-000280 · ai-slop-security-theater
- highCSRF tokens on state-changing requestsab-002376 · security-hardening
- mediumCVC/CVV verification is enabledab-001168 · ecommerce-payment-security
- highData collection limited to minimum necessary for stated functionalityab-001302 · extension-data-privacy
- mediumData export does not include other users' private messagesab-000726 · community-privacy-controls
- highDatabase Queries Scoped to Tenantab-002268 · saas-authorization
- mediumDatabase user follows least privilege (not using superuser for application)ab-000915 · database-design-operations
- mediumDevice fingerprinting on login; new device triggers step-upab-001474 · finserv-session-security
- highDisabling a user or downgrading their role terminates their live sessions, not just future loginsab-002627 · soc2-readiness
- criticalDockerfile includes USER directive with non-root UID above 1000ab-001631 · infrastructure-hardening
- highDowngrade removes access to premium featuresab-002254 · saas-billing
- mediumDuplicate account creation is difficultab-000707 · community-moderation-safety
- criticalDynamic-id routes enforce object-level ownershipab-002612 · project-snapshot
- mediumEdge caching strategy handles personalized contentab-002031 · performance-deep-dive
- mediumEmail verification does not block initial accessab-002349 · saas-onboarding
- highEmail verification is required on signupab-002223 · saas-authentication
- highEmail verification required for new accountsab-000706 · community-moderation-safety
- mediumError messages don't leak sensitive infoab-001576 · gov-fisma-fedramp
- lowError responses do not leak stack traces or internal detailsab-000395 · api-security
- criticalEvery API Route Checks Permissionsab-002249 · saas-authorization
- criticalEvery database query is scoped to the active tenantab-002332 · saas-multi-tenancy
- criticalExplicit user consent before AI processingab-000155 · ai-data-privacy
- mediumExternal connections verified and controlledab-001551 · gov-cmmc-level-1
- lowExternal links use noopener noreferrerab-002435 · security-headers-ii
- highexternally_connectable is restrictedab-001336 · extension-permissions-security
- lowFamily Sharing entitlements handledab-000408 · app-store-iap-subscriptions
- highFeature access is gated on subscription statusab-002255 · saas-billing
- lowFeature Flags Server-Verifiedab-002251 · saas-authorization
- highFile storage is segregated by tenantab-002315 · saas-multi-tenancy
- highFile system operations are restricted to a declared scopeab-001849 · mcp-server
- highFile Upload Permissions Scoped to Userab-002241 · saas-authorization
- criticalFollow/Unfollow Transactional Logicab-000760 · community-social-engagement
- lowFollower and following lists independently visible and revocableab-000732 · community-privacy-controls
- highFree tier limits are enforcedab-002277 · saas-billing
- highGambling and contests compliance — licensing, age restrictions, jurisdictional controlsab-000454 · app-store-policy-compliance
- lowGraphQL introspection disabled in productionab-000390 · api-security
- criticalGuest checkout option available without account creationab-001101 · ecommerce-cart-ux
- highHarassment and blocking features are availableab-000712 · community-moderation-safety
- lowHeavy permissions are optionalab-001322 · extension-permissions-security
- lowHoneypot fields catch botsab-000708 · community-moderation-safety
- criticalIdentity verified (passwords, sessions) before accessab-001555 · gov-cmmc-level-1
- lowIframes use sandbox attributeab-002444 · security-headers-ii
- highImported security middleware is actually wired inab-002614 · project-snapshot
- mediumIndividual posts carry independent visibility, enforced server-sideab-000719 · community-privacy-controls
- criticalInfrastructure-as-code does not declare data stores with public network exposureab-002629 · soc2-readiness
- highInvitation flow validates tenant membershipab-002329 · saas-multi-tenancy
- lowIP-based rate limiting on unauthenticated endpointsab-000388 · api-security
- highJWT tokens have a reasonable expiry if usedab-002220 · saas-authentication
- highJWT validation covers signature, algorithm, expiry, and audienceab-002406 · security-hardening
- criticalJWT verification uses .verify() not just .decode()ab-000288 · ai-slop-security-theater
- highKubernetes RBAC configured with minimal permissions; no wildcard verbs or cluster-adminab-001638 · infrastructure-hardening
- lowLegacy Feature-Policy header also setab-002443 · security-headers-ii
- highLegal pages accessible without login or account creationab-001667 · legal-pages-compliance
- criticalListing claim verifies via business contact method, not claimant email aloneab-001080 · directory-submissions-moderation
- lowListing owners can self-flag a listing as closed without moderator actionab-001092 · directory-submissions-moderation
- highLocation permission distinguishes between always/when-in-use/neverab-001897 · mobile-permissions-privacy
- highLog access restricted to audit/compliance roles onlyab-001385 · finserv-audit-trail
- criticalLogin endpoint has rate limitingab-002232 · saas-authentication
- criticalLogin form has CSRF protectionab-002234 · saas-authentication
- lowLogin is not required for features that do not need identityab-000513 · app-store-review-blockers
- highLogout clears client+server session data within 1sab-001459 · finserv-session-security
- highLogout invalidates the server-side sessionab-002233 · saas-authentication
- mediumMatches are specificab-001331 · extension-permissions-security
- highMessage sender is validatedab-001323 · extension-permissions-security
- infoMFA option is available for usersab-002224 · saas-authentication
- mediumMulti-factor authentication availableab-002403 · security-hardening
- highMulti-factor authentication is enforced for admin and CDE accessab-001181 · ecommerce-pci
- highMulti-Tenant Data Isolation Enforcedab-002272 · saas-authorization
- mediumNavigation prevents navigating back to initial/splash screenab-001864 · mobile-navigation-linking
- lowNegative Authorization Tests Presentab-002238 · saas-authorization
- mediumNew account posting is rate-limited or delayedab-000709 · community-moderation-safety
- criticalNew submissions enter moderation queue and are not visible until approvedab-001077 · directory-submissions-moderation
- highNo Cross-Tenant Data Leakage in List Endpointsab-002266 · saas-authorization
- criticalNo cross-tenant data visible in API responsesab-002334 · saas-multi-tenancy
- mediumNo debug routes active in productionab-000270 · ai-slop-half-finished
- infoNo default or test accounts in non-test codeab-002246 · saas-authentication
- highNo dev-only auth bypass patternsab-000265 · ai-slop-half-finished
- criticalNo fallback admin credentials in authentication codeab-000260 · ai-slop-half-finished
- highNo global host permissions (all_urls)ab-001320 · extension-permissions-security
- highNo global state pollutionab-002085 · plugin-extension-architecture
- highNo hardcoded test users seeded at production startupab-000261 · ai-slop-half-finished
- mediumNo hardcoded user IDs in handler logicab-000262 · ai-slop-half-finished
- criticalNo Insecure Direct Object References (IDOR)ab-002244 · saas-authorization
- highNo Privilege Escalation via Parameter Tamperingab-002267 · saas-authorization
- criticalNo way to bypass payment via APIab-002265 · saas-billing
- lowOAuth and third-party app grants viewable and individually revocableab-000730 · community-privacy-controls
- highOAuth state parameter is validatedab-002228 · saas-authentication
- lowOAuth state parameter is validated when handler is hand-rolledab-000286 · ai-slop-security-theater
- mediumOAuth state parameter validated on callbackab-002400 · security-hardening
- lowOAuth uses SFSafariViewController or Custom Tabs, not embedded WebViewab-000509 · app-store-review-blockers
- lowOTP/SMS/email for step-up on multi-device/webab-001468 · finserv-session-security
- highOwners edit published listings via pending edit queue, not direct overwriteab-001088 · directory-submissions-moderation
- lowPassword policy enforces minimum complexity and rotationab-001184 · ecommerce-pci
- highPassword policy meets NIST 800-63B guidelinesab-001556 · gov-cmmc-level-1
- highPassword requirements enforcedab-001572 · gov-fisma-fedramp
- highPassword reset tokens are time-limited and single-useab-002227 · saas-authentication
- mediumPassword strength requirements are enforcedab-002217 · saas-authentication
- criticalPayment processing uses a PCI-compliant providerab-002263 · saas-billing
- highPermission justification in manifest matches actual feature usageab-001305 · extension-data-privacy
- lowPermission status checking implemented before API callsab-001912 · mobile-permissions-privacy
- highPermission-based sandboxingab-002084 · plugin-extension-architecture
- infoPermissions are justifiedab-001340 · extension-permissions-security
- criticalPermissions are minimal and justifiedab-001319 · extension-permissions-security
- criticalPermissions are restricted to essential functionality onlyab-001346 · extension-store-readiness
- lowPermissions-Policy header restricts sensitive APIsab-000010 · security-headers
- lowPhoto library permission limited to selected photos on iOS 14+ab-001906 · mobile-permissions-privacy
- mediumPost-shipment cancellation requires special handling or admin approvalab-001140 · ecommerce-order-management
- highPre-shipment cancellation allowed and functionalab-001139 · ecommerce-order-management
- criticalPresence state computed from server connection state, not forgeable client heartbeatsab-000745 · community-realtime
- highPricing page matches backend enforcementab-002259 · saas-billing
- lowPrinciple of least privilege for database and service accountsab-002420 · security-hardening
- lowPrivate Account/Friend Request Flowab-000764 · community-social-engagement
- mediumProduction credentials restricted with MFA and auditab-001264 · environment-security
- highProfile Privacy & Visibility Controlsab-000757 · community-social-engagement
- mediumProfile visibility enforced at three or more tiers at API layerab-000718 · community-privacy-controls
- lowPromotional and introductory offers follow store guidelinesab-000421 · app-store-iap-subscriptions
- criticalProtected route groups actually call a session getterab-002611 · project-snapshot
- criticalProtected route handlers call a session getterab-000284 · ai-slop-security-theater
- highPublic-accessible subnetworks separated from internal networksab-001564 · gov-cmmc-level-1
- mediumPublic-facing content controlled, no FCI exposedab-001552 · gov-cmmc-level-1
- lowQueries select specific columns instead of SELECT *ab-000907 · database-design-operations
- highRate limiting enforced on authentication endpointsab-002408 · security-hardening
- criticalRate limiting implementedab-002204 · saas-api-design
- highRate limiting is applied to payment submission endpointsab-001163 · ecommerce-payment-security
- highRBAC implemented with least privilegeab-001574 · gov-fisma-fedramp
- highRefresh token rotation is implementedab-002206 · saas-authentication
- highRefresh tokens are rotated on useab-000379 · api-security
- lowRefund initiated within configured timeframe of cancellationab-001144 · ecommerce-order-management
- mediumRemember-me uses a separate long-lived tokenab-002229 · saas-authentication
- mediumReminder includes one-click link to reschedule or cancel without requiring loginab-000577 · booking-notifications-reminders
- criticalResource Ownership Verifiedab-002252 · saas-authorization
- criticalResource scoping enforcedab-002083 · plugin-extension-architecture
- lowRole Assignment Restrictedab-002242 · saas-authorization
- highRole Hierarchy Enforcedab-002250 · saas-authorization
- highRole-based access control (RBAC) is documented and enforcedab-001182 · ecommerce-pci
- highRole-based access control enforcedab-000380 · api-security
- highRole-based access separates privileged from regular usersab-001553 · gov-cmmc-level-1
- highRow-Level Security (RLS) or equivalent access control on multi-tenant tablesab-000914 · database-design-operations
- highSearch and filter do not cross tenant boundariesab-002318 · saas-multi-tenancy
- mediumSearch indexing respects visibility; private excluded from resultsab-000720 · community-privacy-controls
- highSecure storage used for auth tokens and secretsab-001887 · mobile-offline-storage
- highSensitive APIs restricted (camera, microphone, geolocation)ab-002445 · security-headers-ii
- highSensitive Operations Require Re-authenticationab-002269 · saas-authorization
- highSensitive permissions use proper permission APIab-001896 · mobile-permissions-privacy
- mediumServer-side deletion API exists and is accessible from the appab-000480 · app-store-privacy-data
- highServer-side receipt validation with App Store Server API v2 or Google RTDNab-000404 · app-store-iap-subscriptions
- lowService accounts follow the principle of least privilegeab-001183 · ecommerce-pci
- highSession cookies have Secure and HttpOnly flagsab-000003 · security-headers
- highSession expiry is configured with a reasonable timeoutab-002209 · saas-authentication
- criticalSession fixation prevented: new session ID on loginab-001472 · finserv-session-security
- highSession fixation protection is in placeab-002207 · saas-authentication
- mediumSession is invalidated on password changeab-002205 · saas-authentication
- mediumSession resumption after network interrupt requires re-authab-001460 · finserv-session-security
- highSession timeout enforced server-side with 30-minute idle limitab-002377 · security-hardening
- highSession tokens in secure HTTP-only cookies, SameSite=Strictab-001473 · finserv-session-security
- highSession tokens use secure, HttpOnly, SameSite cookiesab-002216 · saas-authentication
- highSession-getter failures return early without executing protected logicab-000285 · ai-slop-security-theater
- mediumSessions expire after ≤30min inactivity; re-auth for sensitive opsab-001575 · gov-fisma-fedramp
- criticalSessions expire after 15min inactivity for financial opsab-001457 · finserv-session-security
- highShared resources do not leak between tenantsab-002327 · saas-multi-tenancy
- highShared Resources Have Access Controlsab-002235 · saas-authorization
- highSign in with Apple uses correct button styling if social login existsab-000440 · app-store-metadata-listing
- infoSocial auth callback URLs are whitelistedab-002221 · saas-authentication
- lowSocial features disabled for children without parental consentab-000826 · coppa-compliance
- lowSocial or OAuth signup is availableab-002345 · saas-onboarding
- highStep-up auth for transfers/wires/paymentsab-001465 · finserv-session-security
- mediumStep-up uses equal or higher strength than initial loginab-001466 · finserv-session-security
- highSubscription status is verified server-sideab-002253 · saas-billing
- criticalSupabase RLS is enabled with real policies on every tableab-002569 · project-snapshot
- lowSuspicious activity triggers additional step-upab-001475 · finserv-session-security
- criticalSystem access limited to authorized users and processesab-001549 · gov-cmmc-level-1
- mediumTeam invitation flow is clearly presentedab-002366 · saas-onboarding
- highTemplates rendered server-sideab-002466 · sending-pipeline-infrastructure
- criticalTenant context is set from authenticated session, not client inputab-002330 · saas-multi-tenancy
- lowTenant data export is scoped to the requesting tenantab-002350 · saas-multi-tenancy
- lowTenant settings are isolatedab-002343 · saas-multi-tenancy
- highTenant switching does not leak prior tenant dataab-002319 · saas-multi-tenancy
- highTest and seed data has been removedab-002176 · pre-launch
- infoTimeout configurable per org, min 15minab-001463 · finserv-session-security
- mediumTimeout warning ≥2min before expiration with extend optionab-001461 · finserv-session-security
- highTool responses do not echo secrets or credentialsab-001848 · mcp-server
- highTransactions and functions limited to authorized usersab-001550 · gov-cmmc-level-1
- highTrial period enforces feature limitsab-002256 · saas-billing
- mediumUnused host permissions removedab-001335 · extension-permissions-security
- lowURL patterns do not expose internal tenant IDsab-002354 · saas-multi-tenancy
- highUser bans and suspensions are enforcedab-000704 · community-moderation-safety
- criticalUser Blocking & Safety Mechanismsab-000758 · community-social-engagement
- lowUser can view/terminate active sessions remotelyab-001470 · finserv-session-security
- highUsers under 13 blocked from accounts or routed to COPPA-compliant experienceab-000815 · coppa-compliance
- criticalUsers uniquely identified before accessab-001554 · gov-cmmc-level-1
- lowWeb accessible resources are scopedab-001338 · extension-permissions-security
- mediumWebhook endpoints validate payloadsab-002193 · saas-api-design
- mediumWebhook Endpoints Validate Senderab-002236 · saas-authorization
- highWebhook handlers verify the signatureab-000252 · ai-slop-cost-bombs
- mediumWebhook payloads do not include other tenants' dataab-002326 · saas-multi-tenancy
- criticalWebhook signature verification is implementedab-002262 · saas-billing
- criticalWebhook signature verification is implemented on all payment webhooksab-001154 · ecommerce-payment-security
- infoWebhook signatures verifiedab-000396 · api-security
- criticalWebSocket connections require authentication before streamingab-000735 · community-realtime