Skip to content

Security enforcement

Protected override on ClaimAppManager (OnCheckSecurity) that is the primary authorization enforcement point in this library.

Field Value
Operation ID OP-CLM-003
Trigger Step 3 of ChangeContext(), whenever ContextSet becomes true after a SetClaimContext/SetWorkerContext call.
Inputs Current ClaimData
Outputs Security/access state (SecurityRole, Message)
Primary components ClaimAppManager.OnCheckSecurity, ClaimSecurity.CheckClaim, ClaimAppManager.CheckForSecurityOverride
Entry point SAIF.Application.Claim\ClaimAppManager.vb

Steps

  1. Call ClaimSecurity.CheckClaim(ClaimData) — evaluates BR-CLM-001, BR-CLM-002, BR-CLM-003, and BR-CLM-004 against the claim, using the current user's ClaimUserAccess token. No SQL/table access at this step (in-memory flag evaluation only).
  2. Call MarkViewOnly() unconditionally — defaults every context change to view-only, per BR-CLM-005.
  3. If Not ClaimSecurity.ConflictAccess and Not CheckForSecurityOverride(), call MarkNoAccess() and set Message = ConfidentialAccessDeniedMessage.
  4. This enforces BR-CLM-001 as a hard access denial (not just view-only) unless a security override applies.
  5. CheckForSecurityOverride() delegates to ClaimServices.HasOverrideAcess(DPI, ClaimData.ClaimID, SecurityPrincipal.UserName.ToString) — an operation implemented in an externally-packaged business-services library; ClaimServices is not defined anywhere in this library or the rest of the scanned repository, so its internal logic is unresolved**.

Process flow

flowchart TD
    Start([OnCheckSecurity invoked]) --> Check[ClaimSecurity.CheckClaim]
    Check --> ViewOnly[MarkViewOnly]
    ViewOnly --> Conflict{ConflictAccess?}
    Conflict -->|Yes| Allowed([Access retained])
    Conflict -->|No| Override{CheckForSecurityOverride?}
    Override -->|Yes| Allowed
    Override -->|No| Denied([MarkNoAccess<br>ConfidentialAccessDeniedMessage])

Failure and edge-case behavior

  • Conflict claim with no access and no override: hard denial via MarkNoAccess(), see BR-CLM-001.
  • ClaimServices.HasOverrideAcess internal logic cannot be verified — unresolved external dependency**.

Note: Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Application.Claim\ClaimAppManager.vb
  • SAIF.Application.Claim\ClaimSecurity.vb