RequireAssertion adds a custom authorization requirement to a policy in Program.cs. An anonymous function receives AuthorizationHandlerContext, whose ClaimsPrincipal lets the policy inspect, transform, or convert claim values. section 9.4.7
Minimum-age policy
A MinAge18 policy can require a date-of-birth claim, parse its yyyyMMdd value, and compare it with the current date minus 18 years. Apply the policy with [Authorize(Policy = "MinAge18")]. section 9.4.7
options.AddPolicy("MinAge18", policy =>
policy
.RequireAssertion(ctx =>
ctx.User.HasClaim(c => c.Type == ClaimTypes.DateOfBirth)
&& DateTime.ParseExact(
"yyyyMMdd",
ctx.User.Claims.First(c =>
c.Type == ClaimTypes.DateOfBirth).Value,
System.Globalization.CultureInfo.InvariantCulture)
>= DateTime.Now.AddYears(-18)));
Inspect the complete RequireAssertion configuration for the MinAge18 policy, including claim lookup, parsing, and age comparison. section 9.4.7
