3

我有使用 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)
                 ));
4

1 回答 1

3

你可以试试:

if (env.IsDevelopment())
{
     IdentityModelEventSource.ShowPII = true; 
}

此外,您可能需要添加授权,因为默认情况下不包含授权。

于 2020-01-04T00:55:14.243 回答