Table of Contents

Class IdProofingService

Namespace
SEBT.Portal.Infrastructure.Services
Assembly
SEBT.Portal.Infrastructure.dll

Unified identity proofing service. Evaluates IAL requirements for resource+action pairs and determines PII visibility. Singleton lifetime — holds a volatile reference to settings that is swapped safely on config changes.

public class IdProofingService : IIdProofingService, IPiiVisibilityService
Inheritance
object
IdProofingService
Implements

Constructors

IdProofingService(IOptionsMonitor<IdProofingRequirementsSettings>, ILogger<IdProofingService>)

public IdProofingService(IOptionsMonitor<IdProofingRequirementsSettings> monitor, ILogger<IdProofingService> logger)

Parameters

monitor IOptionsMonitor<IdProofingRequirementsSettings>
logger ILogger<IdProofingService>

Methods

Evaluate(ProtectedResource, ProtectedAction, UserIalLevel, IReadOnlyList<SummerEbtCase>)

Evaluates whether the user meets the IAL requirement for the requested resource+action, resolved against their case types.

public IdProofingDecision Evaluate(ProtectedResource resource, ProtectedAction action, UserIalLevel userIalLevel, IReadOnlyList<SummerEbtCase> cases)

Parameters

resource ProtectedResource
action ProtectedAction
userIalLevel UserIalLevel
cases IReadOnlyList<SummerEbtCase>

Returns

IdProofingDecision

GetVisibility(UserIalLevel)

Resolves visibility for a user without case context. Per-case-type view requirements degrade to IAL1 here (no cases = no case-derived reason to require elevated IAL), so callers that have access to the user's cases should prefer the overload that accepts them.

public PiiVisibility GetVisibility(UserIalLevel userIalLevel)

Parameters

userIalLevel UserIalLevel

Returns

PiiVisibility

GetVisibility(UserIalLevel, IReadOnlyList<SummerEbtCase>)

Resolves visibility against the user's actual cases. Required for per-case-type view requirements (e.g. address+view) to apply correctly — without the cases, the "highest wins" rule has nothing to resolve against.

public PiiVisibility GetVisibility(UserIalLevel userIalLevel, IReadOnlyList<SummerEbtCase> cases)

Parameters

userIalLevel UserIalLevel
cases IReadOnlyList<SummerEbtCase>

Returns

PiiVisibility