Azure AD出现IDX10803和IDX10804错误

时间:2017-11-10 06:02:05

标签: azure asp.net-web-api

我在ASP.NET Core 2中创建了一个Web API,并使用Azure AD进行保护。请求在我的开发环境中正常工作。但是,当我将API发布到IIS并在请求中传入Authorization标头时,我收到了以下错误:

fail: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[3]
  Exception occurred while processing message.

System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'https://login.microsoftonline.com/xxxx/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'https://login.microsoftonline.com/xxxx/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A connection with the server could not be established

我做错了什么?我可以在浏览器中成功浏览网址。

1 个答案:

答案 0 :(得分:0)

我明白了。这是因为代理设置访问互联网。由于ASP.NET Core没有从web.config的system.net区域获取代理设置,因此理想的解决方案是创建一个中间件来充当代理。

<击>

我的时间不够用。因此,我创建了一个新用户并使用该新用户登录服务器,并在Internet Explorer选项中配置了代理设置。然后我在IIS中配置了App Pool,以便在该用户的身份下运行。问题解决了!

正确的答案是为ADAL使用BackchannelHttpHandler进行的元数据请求添加代理。你可以这样做:

  public void Configure(string name, JwtBearerOptions options)
                {
                    options.BackchannelHttpHandler = new HttpClientHandler
                    {
                        UseProxy = true,
                        Proxy = new WebProxy
                        {
                            Address = new Uri($"{appSettings.InternetProxyUrl}:{appSettings.InternetProxyPort}"),
                            UseDefaultCredentials = true
                        }
                    };
}