我有使用 azureb2c 进行身份验证的网络应用程序。有 3 个 API,由 Web 应用程序通过 Ocelot 网关使用 HttpClient 调用。身份验证后,当通过网关向 API 发出请求时,会向特定 API 发出请求并提供所需的响应。但是,在阅读响应时,下面一行会抛出异常
var result = await response.Content.ReadAsStringAsync();
IDX10214:观众验证失败。观众:“[PII 被隐藏]”。不匹配:validationParameters.ValidAudience: '[PII is hidden]' 或 validationParameters.ValidAudiences: '[PII is hidden]'。
我已经使用邮递员单独测试了 API,它可以工作。
我为每个客户端配置了类似于下面的代码
services.AddHttpClient<IApiClient, ApiClient>()
.AddHttpMessageHandler<AccessTokenHandler>()
.AddHttpMessageHandler<ValidateHeaderHandler>()
.AddTransientHttpErrorPolicy(policyBuilder => policyBuilder.RetryAsync(2))
.AddTransientHttpErrorPolicy(policyBuilder => policyBuilder.CircuitBreakerAsync
(
handledEventsAllowedBeforeBreaking: 2,
durationOfBreak: TimeSpan.FromMinutes(1)
));