VANKPA
Start a project

Web applications

Check every access boundary.

How to test user permissions in a business web application

Security reviewer testing two laptops with different unlabelled profiles

The decision

Permission testing should verify what a user can read, change, export, and approve. It also needs to confirm what is denied. Testing only the administrator's happy path leaves important boundaries unexamined.

In practice

A client should not access another organization's invoice by changing a URL or opening a shared link. An employee who can view a record may still lack permission to approve it. Review actions and data scope separately.

Put it into practiceYour next checks
  1. Build a role-and-action matrix using actual business responsibilities.
  2. Test representative accounts, direct URLs, file downloads, and changes in membership.
  3. Include server-side checks; hiding a button alone does not establish an access boundary.

When to take the next step

Review access before adding roles, organizations, or exports. Choose test accounts that represent the actual boundaries rather than relying on one unrestricted administrator.

Questions clients ask

Is a role list enough?

No. Connect each role to permitted actions and the specific records it may access.

When should permissions be retested?

Whenever roles, workflows, exports, organization boundaries, or identity behavior change.

A worked scenario

Consider a client portal serving several customer organizations. The useful outcome is to keep each user inside an authorized boundary. This is a planning example, not a reported client result. The team needs a decision that can be checked against real work, rather than a feature list that looks complete during a presentation. The starting question is whether the proposed approach changes that particular task in a way the people doing it can recognize.

In this situation, hidden controls masking an endpoint that still allows access is the failure to guard against. Ask the responsible person to demonstrate an ordinary case and one difficult case using current records or safe test data. Record what they expect to happen, what actually happens, and where they need another person to intervene. Those observations establish the scope for this example; they do not justify an assumed improvement percentage or a guaranteed business result.

Decision checkpoints

Evidence to collect for this scenario
CheckpointPractical actionEvidence to retain
PrepareCreate a role and resource permission matrix.The approved scope, relevant source records, and unresolved questions.
VerifyTest direct URLs and requests as well as visible controls.The test case, expected result, observed result, and correction needed.
OperateRepeat tests after role changes and account removal.The responsible owner, completion record, and next review trigger.

Use these checkpoints to keep each user inside an authorized boundary; they are a sequence of decisions, not a promise of a particular schedule. A completed document or screen is not enough if the underlying action still fails. Keep unresolved items visible and describe which ones prevent progression. The evidence can be a small test record, an approved mapping, or a reviewed example. It should be understandable to someone who was not present when the work happened.

Measure the useful result

A useful check for this topic is denied unauthorized test actions divided by unauthorized test attempts. The numerator is denied unauthorized test actions; the denominator is unauthorized test attempts. Define the sampling window, exclusions, and source of each count before interpreting the result. If only selected examples can be reviewed, describe them as a sample. Do not present a small reviewed group as a complete picture of the business, and do not assign a target simply because a round number looks persuasive.

The measure helps reveal whether the team can keep each user inside an authorized boundary, but it does not explain every cause of success or failure. Inspect the underlying cases alongside the summary. If the count changes after test direct URLs and requests as well as visible controls, check whether the operating result changed or the counting method changed. Retain enough context to explain the difference. When records are incomplete, state the limitation and use a direct task review instead of manufacturing a precise-looking estimate.

Step 1: Prepare the evidence

The first practical move is to create a role and resource permission matrix. Start with the smallest set of examples that covers the important variation in this scenario. Include an ordinary case, a case with missing information, and a case that requires intervention. Describe the intended result before reviewing the current behavior. This keeps the preparation focused on the outcome: keep each user inside an authorized boundary.

For a client portal serving several customer organizations, the person responsible for the source information should take part in preparation. Ask that person to confirm which information is authoritative and which points still need a decision. Record those uncertainties beside the scope instead of hiding them in a general assumption. Preparation is complete when another team member can follow the agreed example and explain what evidence would allow the work to continue.

Step 2: Test the difficult case

The next move is to test direct URLs and requests as well as visible controls. Compare expected behavior with observed behavior in the same test, rather than comparing two descriptions written at different times. Pay particular attention to hidden controls masking an endpoint that still allows access. A demonstration that works only for its author does not establish that the intended user can complete the task. Let the reviewer attempt the work with the instructions they would normally receive.

For this check, retain the input, the relevant condition, and the final disposition. A screenshot can illustrate the state, but the record also needs to explain what the team expected and why the result matters. If one client can retrieve another client's record, hold the decision open and send it to someone with the authority to resolve it. Retest the changed case after correction; an agreement to fix something is different from evidence that the correction works.

Step 3: Assign operating ownership

The operating move is to repeat tests after role changes and account removal. A successful initial test should lead to a repeatable responsibility, not a permanent dependency on the person who built the solution. Name the person who reviews the result, the person who can change the rule, and the person who responds when the task fails. In this scenario, each responsibility contributes to the same outcome: keep each user inside an authorized boundary.

Give the operator a short record of what healthy work looks like and what requires intervention. Include the warning case of hidden controls masking an endpoint that still allows access, together with the relevant records and support route. The procedure should be usable during normal work, not only during a formal review meeting. Check that an authorized backup person can follow it before treating the approach as ready for broader use.

Handle exceptions deliberately

The specific pause condition is that one client can retrieve another client's record. Make the pause visible to the person doing the work and to the person responsible for resolving it. Preserve the relevant context so investigation does not depend on memory. A stopped case is still part of the process; it needs a status, an owner, and a safe route back into ordinary work after the uncertainty is resolved.

Before restarting, establish whether hidden controls masking an endpoint that still allows access affected only this case or indicates a wider rule problem. Correcting one record may be appropriate for an isolated exception. A recurring pattern may require changing the definition, interface, routing, or review procedure. Test the restart against the original case and one related variation. Record the reason for the change so later reviewers can distinguish a deliberate decision from an unexplained workaround.

Plan your next step.

Discuss your projectBrowse all insights