.NET Core 8 - Flurl 不使用默认代理的当前用户凭据

问题描述 投票:0回答:1

我正在构建一个 .NET Core 8 应用程序,它使用 Flurl 将 HTTP 请求发送到 REST API。

当我使用我的凭据手动设置代理时,它工作正常。 但是,当我不设置凭据时,请求将使用默认系统代理设置,但不使用当前用户凭据。

注意:使用同一用户从命令行启动 cURL 效果很好。

这是我正在使用的代码:

// Uncomment that to make it work :
//FlurlHttp.Clients.WithDefaults( builder => builder
//  .ConfigureInnerHandler( hch => {
//      hch.PreAuthenticate = true;
//      // Current user credentials required :
//      hch.Proxy = new System.Net.WebProxy( "http://my-proxy:myport", true, null, new NetworkCredential( "mydomain\\mylogin", "mypassword" ) );
//      hch.UseProxy = true;
//  } ) );

var response = await "https://the-oauth-server/oauth/token"
    .PostUrlEncodedAsync( new {
        client_id = "my-client-id",
        client_secret = "my-client-secret",
        grant_type = "client_credentials",
        scope = "the-scope"
    } );
// Without the manual proxy configuration (with the current user credentials !)
// Exception : The proxy tunnel request to proxy 'http://my-proxy:myport/' failed with status code '407'

我尝试像这样设置代理:

hch.Proxy = System.Net.WebRequest.GetSystemWebProxy();

并尝试像这样设置凭据:

hch.Proxy.Credentials = CredentialCache.DefaultCredentials;
.net proxy windows-authentication credentials flurl
1个回答
0
投票

我还没有测试过这个,但我认为你只需要在代理上设置

UseDefaultCredentials
(以及处理程序上的maybe?)到
true

hch.Proxy = new System.Net.WebProxy("http://my-proxy:myport", true)
{
    UseDefaultCredentials = true
};
hch.UseProxy = true;
// I'm not certain if this is necessary; try without first:
hch.UseDefaultCredentials = true;
© www.soinside.com 2019 - 2024. All rights reserved.