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¶
- 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'sClaimUserAccesstoken. No SQL/table access at this step (in-memory flag evaluation only). - Call
MarkViewOnly()unconditionally — defaults every context change to view-only, per BR-CLM-005. - If
Not ClaimSecurity.ConflictAccessandNot CheckForSecurityOverride(), callMarkNoAccess()and setMessage = ConfidentialAccessDeniedMessage. - This enforces BR-CLM-001 as a hard access denial (not just view-only) unless a security override applies.
CheckForSecurityOverride()delegates toClaimServices.HasOverrideAcess(DPI, ClaimData.ClaimID, SecurityPrincipal.UserName.ToString)— an operation implemented in an externally-packaged business-services library;ClaimServicesis 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.HasOverrideAcessinternal logic cannot be verified — unresolved external dependency**.
Related documentation¶
Note: Statements marked with
**could not be confirmed; treat as unknown until verified.
Sources¶
SAIF.Application.Claim\ClaimAppManager.vbSAIF.Application.Claim\ClaimSecurity.vb