SAIF.Framework.Validation security and authorization
This page documents authorization mechanisms implemented or consumed by this
library. Authentication is handled entirely by infrastructure (NTLM/AD) and is
not application-level — all code receives a WindowsIdentity on the request
context.
Authorization architecture
Authorization in this library is centralized. Rule execution never queries
Active Directory directly: RuleAuthorization resolves the caller's
WindowsIdentity from ValidationContext, then delegates every check to the
ISecurityManager implementation supplied by SAIF.Framework.Core, which in
turn calls the WCF SecurityService endpoint. Results are cached per identity
for the lifetime of a validation run, so a rule set that evaluates fifty rules
issues at most one resource lookup per distinct resource name.
flowchart TD
Engine[ValidationEngine.Execute] --> Gate[RuleAuthorization.EnsureCanExecute]
Gate --> Cache[AuthorizationResultCache]
Cache -->|miss| Manager[SAIF.Framework.Core.SecurityManager]
Manager --> Service[WCF SecurityService]
Service --> AD[(Active Directory)]
Gate --> Owner[PolicyOwnershipValidator.AssertOwnership]
Owner --> Service
AD resource catalog
Resource name
Purpose
Enforcement point
Source
SAIF\ClaimsIntake_Users
Grants execution of intake-stage validation rule sets, which accept first-notice-of-loss submissions.
RuleAuthorization.EnsureCanExecute
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
SAIF\PolicyAudit_Operators
Grants execution of premium audit rule sets and access to audit-period override values.
RuleAuthorization.EnsureCanExecute
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
SAIF\PolicyAudit_Approvers
Permits approval of a completed audit result set. Held separately from SAIF\PolicyAudit_Operators to satisfy SOD-001.
RuleApprovalGuard.EnsureCanApprove
src/SAIF.Framework.Validation/Security/RuleApprovalGuard.vb
SAIF\Validation_RuleAuthors
Permits registration of custom rule types at runtime through RuleRegistry.Register.
RuleRegistry.Register
src/SAIF.Framework.Validation/Rules/RuleRegistry.vb
SAIF\Validation_Diagnostics
Permits retrieval of full rule evaluation traces, which include unmasked policyholder field values.
ValidationTraceReader.Read
src/SAIF.Framework.Validation/Diagnostics/ValidationTraceReader.vb
Authorization enforcement points
Programmatic authorization checks
Class
Method
Resource / Role
Check type
Source
RuleAuthorization
EnsureCanExecute
SAIF\ClaimsIntake_Users
IsAuthorized
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
RuleAuthorization
EnsureCanExecute
SAIF\PolicyAudit_Operators
IsAuthorized
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
RuleApprovalGuard
EnsureCanApprove
SAIF\PolicyAudit_Approvers
IsAuthorized
src/SAIF.Framework.Validation/Security/RuleApprovalGuard.vb
RuleRegistry
Register
SAIF\Validation_RuleAuthors
HasAccess
src/SAIF.Framework.Validation/Rules/RuleRegistry.vb
ValidationTraceReader
Read
SAIF\Validation_Diagnostics
IsAuthorized
src/SAIF.Framework.Validation/Diagnostics/ValidationTraceReader.vb
ValidationEngine
ExecuteAsSystem
SAIF_ValidationBatch (service account role)
IsInRole
src/SAIF.Framework.Validation/Engine/ValidationEngine.vb
Data-level authorization
Entity type
Validation method
Mechanism
Source
Policy
PolicyOwnershipValidator.AssertOwnership
Compares the policy's servicing branch code against the branch codes returned for the caller by ISecurityManager.GetBranchScope; a mismatch raises AuthorizationException.
src/SAIF.Framework.Validation/Security/PolicyOwnershipValidator.vb
Claim
ClaimAccessValidator.AssertClaimVisible
Calls the WCF SecurityService.CanViewClaim operation with the claim number and caller identity before any rule reads claim fields.
src/SAIF.Framework.Validation/Security/ClaimAccessValidator.vb
AuditResultSet
RuleApprovalGuard.EnsureCanApprove
Rejects approval when the approver identity equals the SubmittedBy value stored on the result set.
src/SAIF.Framework.Validation/Security/RuleApprovalGuard.vb
Segregation of duties
Rule
Description
Conflicting privileges
Source
SOD-001
Prevents the operator who submitted an audit result set from also approving it. The check compares identities in addition to group membership, so holding both groups does not defeat it.
SAIF\PolicyAudit_Operators + SAIF\PolicyAudit_Approvers
src/SAIF.Framework.Validation/Security/RuleApprovalGuard.vb
SOD-002
Prevents a rule author from executing the rule set they registered in the same session; registration marks the rule set as pending review until a second identity executes it.
SAIF\Validation_RuleAuthors + SAIF\PolicyAudit_Operators
src/SAIF.Framework.Validation/Rules/RuleRegistry.vb
Security interfaces and contracts
Interface / Class
Role
Consumers
Source
IRuleAuthorization
Contract for gating rule set execution; allows host applications to substitute an alternative authorization provider in integration tests.
ValidationEngine, RuleSetLoader
src/SAIF.Framework.Validation/Security/IRuleAuthorization.vb
RuleAuthorization
Default IRuleAuthorization implementation backed by SAIF.Framework.Core.SecurityManager.
ValidationEngine
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
AuthorizationResultCache
Per-run cache of resource lookup results, keyed by identity SID and base resource name.
RuleAuthorization
src/SAIF.Framework.Validation/Security/AuthorizationResultCache.vb
AuthorizationException
Exception type raised on a failed check; carries the resource name and the evaluated identity for audit logging.
RuleAuthorization, RuleApprovalGuard, PolicyOwnershipValidator
src/SAIF.Framework.Validation/Security/AuthorizationException.vb
ISecurityManager
Consumed contract that resolves resource membership and branch scope from the WCF SecurityService.
RuleAuthorization, PolicyOwnershipValidator
src/SAIF.Framework.Validation/SAIF.Framework.Validation.vbproj
Inherited security
From SecuredComponentBase (SAIF.Framework.Core)
Field
Value
Mechanism
Windows integrated authentication; the impersonating WindowsIdentity is captured at construction and exposed to derived types through the protected CurrentIdentity property.
Enforcement
The base constructor throws SecurityException when WindowsIdentity.GetCurrent() is anonymous, so no derived component can run without an authenticated caller.*
Origin
SAIF.Framework.Core — SecuredComponentBase
Source
Retrieved from indexed documentation via Legends CLI
Notes
* marks an inferred statement; ** marks an unknown value. One inferred
statement appears on this page, in the inherited enforcement description.
AD resource names listed here use base names only. The framework appends
Resource (production) or TestResource (non-production) at runtime.
Sources
src/SAIF.Framework.Validation/Security/RuleAuthorization.vb
src/SAIF.Framework.Validation/Security/RuleApprovalGuard.vb
src/SAIF.Framework.Validation/Security/PolicyOwnershipValidator.vb
src/SAIF.Framework.Validation/Security/ClaimAccessValidator.vb
src/SAIF.Framework.Validation/Security/AuthorizationResultCache.vb
src/SAIF.Framework.Validation/Rules/RuleRegistry.vb
src/SAIF.Framework.Validation/Diagnostics/ValidationTraceReader.vb
src/SAIF.Framework.Validation/Engine/ValidationEngine.vb
src/SAIF.Framework.Validation/SAIF.Framework.Validation.vbproj