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
-
objectIdProofingService
- Implements
Constructors
IdProofingService(IOptionsMonitor<IdProofingRequirementsSettings>, ILogger<IdProofingService>)
public IdProofingService(IOptionsMonitor<IdProofingRequirementsSettings> monitor, ILogger<IdProofingService> logger)
Parameters
monitorIOptionsMonitor<IdProofingRequirementsSettings>loggerILogger<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
resourceProtectedResourceactionProtectedActionuserIalLevelUserIalLevelcasesIReadOnlyList<SummerEbtCase>
Returns
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
userIalLevelUserIalLevel
Returns
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
userIalLevelUserIalLevelcasesIReadOnlyList<SummerEbtCase>