Join our Newsletter — 33% off our NHI Course

Request-level access control

Request-level access control limits what a user, service, or agent can do on each individual request rather than only at login or session start. It evaluates context such as identity, action, resource, and conditions at runtime, enabling precise enforcement for APIs, applications, and automated workflows.

How Request-Level Access Control Works

Request-level access control moves enforcement from a one-time login decision to each individual request. That makes the decision path narrower and more precise, because the system can re-evaluate who is acting, what they are trying to do, which resource is involved, and whether the current context still justifies access.

This model is especially important when the same user, service, or agent can make many different calls through one session, because the risk is not just whether the actor logged in, but whether every subsequent action remains authorised. It is the practical difference between granting a door key and checking every attempt to open a specific room.

Why It Matters for APIs and Automated Workflows

APIs, orchestration layers, and application back ends often receive machine-speed traffic where coarse session checks are not enough. A request may be valid in one context and unsafe in another, especially when object ownership, tenant boundaries, or workflow stage change from one call to the next.

Request-level enforcement helps close gaps that appear when an application trusts the session too broadly. It is a strong fit for patterns such as per-object access checks, per-action entitlement checks, and policy decisions that depend on runtime attributes rather than static role membership alone.

For readers working on authorisation design, NHIMG’s Authorisation Models Guide is useful context for the role, attribute, relationship, and policy models that commonly sit behind request-time decisions.

What Makes It Stronger Than Session-Only Controls

Session-only access control can leave a wide gap between the moment a user authenticates and the moment they act. Request-level checks reduce that gap by evaluating the actual request at execution time, which is where many privilege escalation and object-access failures occur.

This is also why request-level control is a better fit for dynamic systems. A user may start with one set of entitlements, but the system can still enforce changes in ownership, scope, risk posture, step-up requirements, or business rules without waiting for the session to expire.

In practice, this approach often aligns with fine-grained authorisation patterns such as deny-by-default logic, server-side ownership checks, and policy decisions that are separated from the application code path.

Common Design Pitfalls

The main failure mode is treating request-level control as a label rather than a real control boundary. If the application only checks the user once, or only checks the front end while trusting downstream services, the system still behaves like coarse session authorisation even if the architecture diagram says otherwise.

Another common problem is inconsistent policy enforcement across endpoints. If some requests are checked carefully and others are left to implied trust, attackers will usually look for the weaker path, especially in object retrieval, bulk operations, admin functions, and internal service calls.

To understand how these failures show up in real applications, NHIMG’s Broken Access Control Prevention Guide is a natural companion because it covers server-side checks, ownership validation, and privilege escalation patterns.

Request-level control also depends on good policy design. If the rules are too broad, too brittle, or too hard to reason about, teams may weaken them over time or bypass them in code paths that feel operationally urgent.

How Practitioners Should Think About It

Why practitioners should care: Request-level access control is one of the most effective ways to keep authorisation aligned with actual behaviour, especially in systems where one session can trigger many different actions. It reduces the chance that a previously valid login becomes a blanket pass for later misuse.

What to watch for: Look for endpoints that make sensitive decisions after authentication but before object-level or action-level checks, because those are the places where broken authorisation usually appears. Pay attention to service-to-service calls, delegated actions, and workflow automation, where trust can be assumed too early.

Practitioner takeaway: Treat request-level checks as part of the execution path, not a wrapper around it. If the request itself is not authorised at the point of use, the control is not truly request-level.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP ASVS, NIST SP 800-53 Rev 5 and CIS Controls v8 set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.

Framework Control / Reference Relevance
OWASP ASVS V8 — Authorization Request-level access control is fine-grained runtime authorisation for each action or object.
Recommendation — Enforce V8 checks on every sensitive request before the application performs the action.
NIST SP 800-53 Rev 5 AC-3 — Access Enforcement This term is fundamentally about enforcing access decisions at request time.
AC-6 — Least Privilege Per-request control supports limiting each action to the minimum access needed.
Recommendation — Apply AC-3 so each request is authorised before the system allows the operation. Use AC-6 to constrain each request to only the privileges required for that action.
CIS Controls v8 CIS-6 — Access Control Management Request-level enforcement is a core access-control practice for users and services.
Recommendation — Implement CIS-6 to verify access at the point of each sensitive request.
ISO/IEC 27001:2022 A.5.15 — Access control The term directly concerns how access is controlled and enforced in operation.
Recommendation — Apply A.5.15 to define and enforce access decisions at request time.