Build named role policies¶
Converts each consumer-declared AddPolicies(string policyName, params string[] roles) call into a named ASP.NET Core authorization policy containing one RoleRequirement per role.
| Field | Value |
|---|---|
| Operation ID | OP-02 |
| Trigger | First resolution of IOptions<AuthorizationOptions> (options framework) |
| Inputs | Framework AuthorizationOptions; consumer SetPolicies() override |
| Outputs | AuthorizationOptions populated with named policies |
| Primary components | ConfigureRoleAuthorizationOptions.Configure, AddPolicies |
| Entry point | src/SAIF.NetCore.NtlmApiAuth/src/SAIF.NetCore.NtlmApiAuth/Options/ConfigureRoleAuthorizationOptions.cs |
Steps¶
- Store the framework
AuthorizationOptionsin theAuthorizationOptionsproperty. - Call the consumer's
SetPolicies()override (abstract). - For each
AddPolicies(string policyName, params string[] roles)call, create oneRoleRequirement(role, AuthorizationService)per role. (BR-NTLM-012) - Call
AuthorizationOptions.AddPolicy(policyName, policy => policy.AddRequirements(requirements)). (BR-NTLM-007) - A duplicate
policyNameis replaced or throws per the framework's ownAuthorizationOptions.AddPolicybehavior; this library does not guard against it.
Process flow¶
flowchart TD
Start([IOptions resolved]) --> S1[Consumer SetPolicies invoked]
S1 --> S2[For each AddPolicies call]
S2 --> S3[Create one RoleRequirement per role]
S3 --> S4[AuthorizationOptions.AddPolicy with all requirements]
S4 --> End([Named policy registered])
Failure and edge-case behavior¶
- Multi-role policies behave as AND, not OR, because every
RoleRequirementmust succeed (BR-NTLM-007).
Related documentation¶
Sources¶
src/SAIF.NetCore.NtlmApiAuth/src/SAIF.NetCore.NtlmApiAuth/Options/ConfigureRoleAuthorizationOptions.cs