我有一个使用azureb2c进行身份验证的Web应用程序。有3个API,这些Web应用程序通过HttpClient的Ocelot网关调用了这3个API。认证后,当通过网关向API发出请求时,将向特定API发出请求,并提供所需的响应。但是,在读取响应时,在下面的行中引发了异常
var result = await response.Content.ReadAsStringAsync();
IDX10214:受众群体验证失败。受众群体:“ [PII隐藏]”。不匹配:validationParameters.ValidAudience:“ [PII隐藏]”或validationParameters.ValidAudiences:“ [PII隐藏]”。
我已经使用邮递员单独测试了API,并且可以正常工作。
我为每个客户端配置了类似于下面的代码
services.AddHttpClient<IApiClient, ApiClient>()
.AddHttpMessageHandler<AccessTokenHandler>()
.AddHttpMessageHandler<ValidateHeaderHandler>()
.AddTransientHttpErrorPolicy(policyBuilder => policyBuilder.RetryAsync(2))
.AddTransientHttpErrorPolicy(policyBuilder => policyBuilder.CircuitBreakerAsync
(
handledEventsAllowedBeforeBreaking: 2,
durationOfBreak: TimeSpan.FromMinutes(1)
));
您可以尝试:
if (env.IsDevelopment())
{
IdentityModelEventSource.ShowPII = true;
}
[另外,您可能要添加授权,因为默认情况下不包括此授权。