Abh*_*ari 4 openid proxy azure-active-directory asp.net-core
我有一个ASPNET Core 2应用程序,正在尝试使用OpenId通过Azure AD进行身份验证。我只是从ASPNET Core 2模板中选择“单一组织身份验证”中获得样板代码,因此没有自定义代码。我在这里关注了这篇文章。
由于代理原因,该应用程序无法从Azure AD应用程序获取元数据。如果仅将其粘贴到浏览器中,则相同的URL返回数据。
我得到的错误是:
HttpRequestException:响应状态代码未指示成功:407(需要代理身份验证)。
System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()IOException:IDX10804:无法从以下位置检索文档:https ://login.microsoftonline.com/my-tenant-id/.well-known/openid-configuration 。
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever + d__8.MoveNext()
我有另一个ASPNET 4.5.2应用程序,可以在如下代码中设置代理后,使用上述相同的Azure AD应用程序执行身份验证:
System.Net.HttpWebRequest.DefaultWebProxy = new WebProxy
{
Address = new Uri("http://my-company-proxy:8080"),
Credentials = new NetworkCredential
{
UserName = "proxyusername",
Password = "proxypassword"
}
};
Run Code Online (Sandbox Code Playgroud)
所以本质上我的问题是要通过ASPNET Core 2中的代理身份验证。
我已经尝试过Microsoft.AspNetCore.Proxy程序包。它几乎坏了,对我不起作用。我也尝试在machine.config中添加Proxy条目(对于4.5.2应用程序实际上不是必需的),但这并不起作用。我相信,通过公司代理人应该是一件很琐碎的事,但到目前为止看起来还不一样。
Tratcher的评论为我指明了正确的方向,并且我正在努力,但仅是为了帮助每个人,以下是您需要做的:
builder.AddOpenIdConnect(options => options.BackchannelHttpHandler = new HttpClientHandler
{
UseProxy = true,
Proxy = new WebProxy
{
Credentials = new NetworkCredential
{
UserName = "myusername",
Password = "mypassword"
},
Address = new Uri("http://url:port")
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |