public record ClaimDTO(string Type, string Value);
public async Task
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer");
request.Headers.Authorization.Parameter = await _httpTokenProvider.GetTokenAsync();
var allClaims = user.Claims.Union(user.FindAll("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"));
var claimsToSend = allClaims
.Select(c =>
new ClaimDTO(c.Type, c.Value))
.ToList();
// Add the claims to the request
request.Content = JsonContent.Create(
new { ClaimsToSend = claimsToSend }, new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
});
return await _httpClient.SendAsync(request, cancellationToken);
}
public class RowLevelSecurityClaimsMiddleware { private readonly RequestDelegate _next;
public RowLevelSecurityClaimsMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context,
[FromServices] IBrowserServiceProvider browserServiceProvider)
{
var claims = new List();
if (context.Request.Method == HttpMethod.Post.ToString() &&
context.Request