Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStephen Toub <stoub@microsoft.com>2017-04-20 08:25:50 +0300
committerGitHub <noreply@github.com>2017-04-20 08:25:50 +0300
commitb5e830365796613f5d076970653cc939d8726a94 (patch)
tree32cf3b1bfc975f35830ccc96f823119bee270ec7 /src
parent7b58c73bddb5246472702863f76ed68e1d2d8735 (diff)
parent8499dc22409f59db6b83ad8a4da9cfac9357b6f9 (diff)
Merge pull request #18627 from stephentoub/defaultcreds_unix
Add support for UseDefaultCredentials to CurlHandler
Diffstat (limited to 'src')
-rw-r--r--src/Common/src/System/Net/Http/HttpHandlerDefaults.cs1
-rw-r--r--src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs10
-rw-r--r--src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs9
3 files changed, 15 insertions, 5 deletions
diff --git a/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs b/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs
index 4f25252624..dc44bffa70 100644
--- a/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs
+++ b/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs
@@ -18,6 +18,7 @@ namespace System.Net.Http
public const bool DefaultPreAuthenticate = false;
public const ClientCertificateOption DefaultClientCertificateOption = ClientCertificateOption.Manual;
public const bool DefaultUseProxy = true;
+ public const bool DefaultUseDefaultCredentials = false;
public static TimeSpan DefaultConnectTimeout => TimeSpan.FromSeconds(60);
}
}
diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs
index 03e512f140..6e07d0b9f0 100644
--- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs
+++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs
@@ -105,7 +105,7 @@ namespace System.Net.Http
SetVersion();
SetDecompressionOptions();
SetProxyOptions(_requestMessage.RequestUri);
- SetCredentialsOptions(_handler.GetCredentials(_requestMessage.RequestUri));
+ SetCredentialsOptions(_handler._useDefaultCredentials ? GetDefaultCredentialAndAuth() : _handler.GetCredentials(_requestMessage.RequestUri));
SetCookieOption(_requestMessage.RequestUri);
SetRequestHeaders();
SetSslOptions();
@@ -341,7 +341,9 @@ namespace System.Net.Http
// Just as with WinHttpHandler, for security reasons, we drop the server credential if it is
// anything other than a CredentialCache. We allow credentials in a CredentialCache since they
// are specifically tied to URIs.
- updatedCredentials = GetCredentials(newUri, _handler.Credentials as CredentialCache, s_orderedAuthTypes);
+ updatedCredentials = _handler._useDefaultCredentials ?
+ GetDefaultCredentialAndAuth() :
+ GetCredentials(newUri, _handler.Credentials as CredentialCache, s_orderedAuthTypes);
// Reset proxy - it is possible that the proxy has different credentials for the new URI
SetProxyOptions(newUri);
@@ -615,7 +617,6 @@ namespace System.Net.Http
{
if (credentials == CredentialCache.DefaultCredentials)
{
- // No "default credentials" on Unix; nop just like UseDefaultCredentials.
EventSourceTrace("DefaultCredentials set for proxy. Skipping.");
}
else if (credentials != null)
@@ -662,6 +663,9 @@ namespace System.Net.Http
EventSourceTrace("Credentials set.");
}
+ private static KeyValuePair<NetworkCredential, CURLAUTH> GetDefaultCredentialAndAuth() =>
+ new KeyValuePair<NetworkCredential, CURLAUTH>(CredentialCache.DefaultNetworkCredentials, CURLAUTH.Negotiate);
+
internal void SetCookieOption(Uri uri)
{
if (!_handler._useCookie)
diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs
index fd000da9c1..9ba67cd4e4 100644
--- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs
+++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs
@@ -138,6 +138,7 @@ namespace System.Net.Http
private DecompressionMethods _automaticDecompression = HttpHandlerDefaults.DefaultAutomaticDecompression;
private bool _preAuthenticate = HttpHandlerDefaults.DefaultPreAuthenticate;
private CredentialCache _credentialCache = null; // protected by LockObject
+ private bool _useDefaultCredentials = HttpHandlerDefaults.DefaultUseDefaultCredentials;
private CookieContainer _cookieContainer = new CookieContainer();
private bool _useCookie = HttpHandlerDefaults.DefaultUseCookies;
private TimeSpan _connectTimeout = Timeout.InfiniteTimeSpan;
@@ -405,8 +406,12 @@ namespace System.Net.Http
internal bool UseDefaultCredentials
{
- get { return false; }
- set { }
+ get { return _useDefaultCredentials; }
+ set
+ {
+ CheckDisposedOrStarted();
+ _useDefaultCredentials = value;
+ }
}
public IDictionary<string, object> Properties