После нескольких часов поиска подходящего варианта расширения в IdentityServer4, вот что я закончил.Конечная точка UserInfo по умолчанию не смотрит на значения ACR, и я не хотел создавать собственную реализацию конечной точки, поэтому я добавил заголовок к клиенту во время моего вызова в:
IHttpClientFactory factory = context.HttpContext.RequestServices.GetRequiredService<IHttpClientFactory>();
System.Net.Http.HttpClient client = factory.CreateClient();
client.DefaultRequestHeaders.Add("X-Tenant", tenant.ShortName);
UserInfoResponse userInfoResponse = await client.GetUserInfoAsync(new UserInfoRequest
{
Address = doc.UserInfoEndpoint,
Token = tokenResponse.AccessToken
});
Для доступа к этому значению вмой IProfileService, я внедряю службу IHttpContextAccessor и могу извлечь значение заголовка в GetProfileDataAsync:
string tenantName = _httpContextAccessor.HttpContext.Request.Headers["X-Tenant"].SingleOrDefault();
Надеюсь, это будет полезно для кого-то другого, кто хочет внедрить проверки претензий конкретных арендаторов.