#160 Move AllowAnonymous from the AuthenticationSchemes to its own bool

This commit is contained in:
Chris R 2016-08-05 16:18:30 -07:00
parent a9b5cec33d
commit 4b36501bd8
8 changed files with 59 additions and 66 deletions

View File

@ -19,7 +19,8 @@ namespace SelfHostServer
// Server options can be configured here instead of in Main. // Server options can be configured here instead of in Main.
services.Configure<WebListenerOptions>(options => services.Configure<WebListenerOptions>(options =>
{ {
options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.AllowAnonymous; options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.None;
options.Listener.AuthenticationManager.AllowAnonymous = true;
}); });
} }
@ -51,7 +52,8 @@ namespace SelfHostServer
.UseStartup<Startup>() .UseStartup<Startup>()
.UseWebListener(options => .UseWebListener(options =>
{ {
options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.AllowAnonymous; options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.None;
options.Listener.AuthenticationManager.AllowAnonymous = true;
}) })
.Build(); .Build();

View File

@ -44,38 +44,29 @@ namespace Microsoft.Net.Http.Server
private WebListener _server; private WebListener _server;
private AuthenticationSchemes _authSchemes; private AuthenticationSchemes _authSchemes;
private bool _allowAnonymous = true;
internal AuthenticationManager(WebListener listener) internal AuthenticationManager(WebListener listener)
{ {
_server = listener; _server = listener;
_authSchemes = AuthenticationSchemes.AllowAnonymous;
} }
#region Properties #region Properties
public AuthenticationSchemes AuthenticationSchemes public AuthenticationSchemes AuthenticationSchemes
{ {
get get { return _authSchemes; }
{
return _authSchemes;
}
set set
{ {
if (_authSchemes == AuthenticationSchemes.None)
{
throw new ArgumentException("value", "'None' is not a valid authentication type. Use 'AllowAnonymous' instead.");
}
_authSchemes = value; _authSchemes = value;
SetServerSecurity(); SetServerSecurity();
} }
} }
internal bool AllowAnonymous public bool AllowAnonymous
{ {
get get { return _allowAnonymous; }
{ set { _allowAnonymous = value; }
return ((_authSchemes & AuthenticationSchemes.AllowAnonymous) == AuthenticationSchemes.AllowAnonymous);
}
} }
#endregion Properties #endregion Properties
@ -86,7 +77,7 @@ namespace Microsoft.Net.Http.Server
new UnsafeNclNativeMethods.HttpApi.HTTP_SERVER_AUTHENTICATION_INFO(); new UnsafeNclNativeMethods.HttpApi.HTTP_SERVER_AUTHENTICATION_INFO();
authInfo.Flags = UnsafeNclNativeMethods.HttpApi.HTTP_FLAGS.HTTP_PROPERTY_FLAG_PRESENT; authInfo.Flags = UnsafeNclNativeMethods.HttpApi.HTTP_FLAGS.HTTP_PROPERTY_FLAG_PRESENT;
var authSchemes = (UnsafeNclNativeMethods.HttpApi.HTTP_AUTH_TYPES)(_authSchemes & ~AuthenticationSchemes.AllowAnonymous); var authSchemes = (UnsafeNclNativeMethods.HttpApi.HTTP_AUTH_TYPES)_authSchemes;
if (authSchemes != UnsafeNclNativeMethods.HttpApi.HTTP_AUTH_TYPES.NONE) if (authSchemes != UnsafeNclNativeMethods.HttpApi.HTTP_AUTH_TYPES.NONE)
{ {
authInfo.AuthSchemes = authSchemes; authInfo.AuthSchemes = authSchemes;

View File

@ -28,7 +28,6 @@ namespace Microsoft.Net.Http.Server
// Digest = 0x2, // TODO: Verify this is no longer supported by Http.Sys // Digest = 0x2, // TODO: Verify this is no longer supported by Http.Sys
NTLM = 0x4, NTLM = 0x4,
Negotiate = 0x8, Negotiate = 0x8,
Kerberos = 0x10, Kerberos = 0x10
AllowAnonymous = 0x1000
} }
} }

View File

@ -82,7 +82,7 @@ namespace Microsoft.Net.Http.Server
_expectedBodyLength = 0; _expectedBodyLength = 0;
_nativeStream = null; _nativeStream = null;
_cacheTtl = null; _cacheTtl = null;
_authChallenges = RequestContext.Server.AuthenticationManager.AuthenticationSchemes & ~AuthenticationSchemes.AllowAnonymous; _authChallenges = RequestContext.Server.AuthenticationManager.AuthenticationSchemes;
} }
private enum ResponseState private enum ResponseState

View File

@ -29,8 +29,11 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
public class AuthenticationTests public class AuthenticationTests
{ {
private static bool AllowAnoymous = true;
private static bool DenyAnoymous = false;
[Theory] [Theory]
[InlineData(AuthenticationSchemes.AllowAnonymous)] [InlineData(AuthenticationSchemes.None)]
[InlineData(AuthenticationSchemes.Negotiate)] [InlineData(AuthenticationSchemes.Negotiate)]
[InlineData(AuthenticationSchemes.NTLM)] [InlineData(AuthenticationSchemes.NTLM)]
// [InlineData(AuthenticationSchemes.Digest)] // [InlineData(AuthenticationSchemes.Digest)]
@ -39,7 +42,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_AllowAnonymous_NoChallenge(AuthenticationSchemes authType) public async Task AuthTypes_AllowAnonymous_NoChallenge(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -62,7 +65,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthType_RequireAuth_ChallengesAdded(AuthenticationSchemes authType) public async Task AuthType_RequireAuth_ChallengesAdded(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, httpContext =>
{ {
throw new NotImplementedException(); throw new NotImplementedException();
})) }))
@ -82,7 +85,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthType_AllowAnonymousButSpecify401_ChallengesAdded(AuthenticationSchemes authType) public async Task AuthType_AllowAnonymousButSpecify401_ChallengesAdded(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -106,8 +109,8 @@ namespace Microsoft.AspNetCore.Server.WebListener
AuthenticationSchemes.Negotiate AuthenticationSchemes.Negotiate
| AuthenticationSchemes.NTLM | AuthenticationSchemes.NTLM
/* | AuthenticationSchemes.Digest TODO: Not implemented */ /* | AuthenticationSchemes.Digest TODO: Not implemented */
| AuthenticationSchemes.Basic | AuthenticationSchemes.Basic,
| AuthenticationSchemes.AllowAnonymous, true,
out address, out address,
httpContext => httpContext =>
{ {
@ -134,7 +137,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
int requestId = 0; int requestId = 0;
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -169,7 +172,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_RequireAuth_Success(AuthenticationSchemes authType) public async Task AuthTypes_RequireAuth_Success(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -183,7 +186,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
} }
[Theory] [Theory]
[InlineData(AuthenticationSchemes.AllowAnonymous)] [InlineData(AuthenticationSchemes.None)]
[InlineData(AuthenticationSchemes.Negotiate)] [InlineData(AuthenticationSchemes.Negotiate)]
[InlineData(AuthenticationSchemes.NTLM)] [InlineData(AuthenticationSchemes.NTLM)]
// [InlineData(AuthenticationSchemes.Digest)] // [InlineData(AuthenticationSchemes.Digest)]
@ -191,10 +194,10 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_GetSingleDescriptions(AuthenticationSchemes authType) public async Task AuthTypes_GetSingleDescriptions(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
var resultList = httpContext.Authentication.GetAuthenticationSchemes(); var resultList = httpContext.Authentication.GetAuthenticationSchemes();
if (authType == AuthenticationSchemes.AllowAnonymous) if (authType == AuthenticationSchemes.None)
{ {
Assert.Equal(0, resultList.Count()); Assert.Equal(0, resultList.Count());
} }
@ -224,7 +227,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
| AuthenticationSchemes.NTLM | AuthenticationSchemes.NTLM
| /*AuthenticationSchemes.Digest | /*AuthenticationSchemes.Digest
|*/ AuthenticationSchemes.Basic; |*/ AuthenticationSchemes.Basic;
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
var resultList = httpContext.Authentication.GetAuthenticationSchemes(); var resultList = httpContext.Authentication.GetAuthenticationSchemes();
Assert.Equal(3, resultList.Count()); Assert.Equal(3, resultList.Count());
@ -247,7 +250,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, async httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, async httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -275,7 +278,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
using (Utilities.CreateHttpAuthServer(authType, out address, async httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, async httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -308,7 +311,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -333,7 +336,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
using (Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address, async httpContext => using (Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address, async httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -360,7 +363,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{ {
string address; string address;
var authTypes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic; var authTypes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic;
using (Utilities.CreateHttpAuthServer(authTypes | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authTypes, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -386,7 +389,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
var authTypes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic; var authTypes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic;
authTypes = authTypes & ~authType; authTypes = authTypes & ~authType;
var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); var authTypeList = authType.ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
using (Utilities.CreateHttpAuthServer(authTypes | AuthenticationSchemes.AllowAnonymous, out address, httpContext => using (Utilities.CreateHttpAuthServer(authTypes, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -408,8 +411,8 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_Forbid_Forbidden(AuthenticationSchemes authType) public async Task AuthTypes_Forbid_Forbidden(AuthenticationSchemes authType)
{ {
string address; string address;
var authTypes = AuthenticationSchemes.AllowAnonymous | AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic; var authTypes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM | /*AuthenticationSchemes.Digest |*/ AuthenticationSchemes.Basic;
using (Utilities.CreateHttpAuthServer(authTypes, out address, httpContext => using (Utilities.CreateHttpAuthServer(authTypes, AllowAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -431,7 +434,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_ChallengeAuthenticatedAuthType_Forbidden(AuthenticationSchemes authType) public async Task AuthTypes_ChallengeAuthenticatedAuthType_Forbidden(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -454,7 +457,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_ChallengeAuthenticatedAuthTypeWithEmptyChallenge_Forbidden(AuthenticationSchemes authType) public async Task AuthTypes_ChallengeAuthenticatedAuthTypeWithEmptyChallenge_Forbidden(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);
@ -477,7 +480,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
public async Task AuthTypes_UnathorizedAuthenticatedAuthType_Unauthorized(AuthenticationSchemes authType) public async Task AuthTypes_UnathorizedAuthenticatedAuthType_Unauthorized(AuthenticationSchemes authType)
{ {
string address; string address;
using (Utilities.CreateHttpAuthServer(authType, out address, httpContext => using (Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address, httpContext =>
{ {
Assert.NotNull(httpContext.User); Assert.NotNull(httpContext.User);
Assert.NotNull(httpContext.User.Identity); Assert.NotNull(httpContext.User.Identity);

View File

@ -38,22 +38,22 @@ namespace Microsoft.AspNetCore.Server.WebListener
internal static IServer CreateHttpServer(out string baseAddress, RequestDelegate app) internal static IServer CreateHttpServer(out string baseAddress, RequestDelegate app)
{ {
string root; string root;
return CreateDynamicHttpServer(string.Empty, AuthenticationSchemes.AllowAnonymous, out root, out baseAddress, app); return CreateDynamicHttpServer(string.Empty, AuthenticationSchemes.None, true, out root, out baseAddress, app);
} }
internal static IServer CreateHttpServerReturnRoot(string path, out string root, RequestDelegate app) internal static IServer CreateHttpServerReturnRoot(string path, out string root, RequestDelegate app)
{ {
string baseAddress; string baseAddress;
return CreateDynamicHttpServer(path, AuthenticationSchemes.AllowAnonymous, out root, out baseAddress, app); return CreateDynamicHttpServer(path, AuthenticationSchemes.None, true, out root, out baseAddress, app);
} }
internal static IServer CreateHttpAuthServer(AuthenticationSchemes authType, out string baseAddress, RequestDelegate app) internal static IServer CreateHttpAuthServer(AuthenticationSchemes authType, bool allowAnonymous, out string baseAddress, RequestDelegate app)
{ {
string root; string root;
return CreateDynamicHttpServer(string.Empty, authType, out root, out baseAddress, app); return CreateDynamicHttpServer(string.Empty, authType, allowAnonymous, out root, out baseAddress, app);
} }
internal static IServer CreateDynamicHttpServer(string basePath, AuthenticationSchemes authType, out string root, out string baseAddress, RequestDelegate app) internal static IServer CreateDynamicHttpServer(string basePath, AuthenticationSchemes authType, bool allowAnonymous, out string root, out string baseAddress, RequestDelegate app)
{ {
lock (PortLock) lock (PortLock)
{ {
@ -68,6 +68,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
var server = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory()); var server = new MessagePump(Options.Create(new WebListenerOptions()), new LoggerFactory());
server.Features.Get<IServerAddressesFeature>().Addresses.Add(baseAddress); server.Features.Get<IServerAddressesFeature>().Addresses.Add(baseAddress);
server.Listener.AuthenticationManager.AuthenticationSchemes = authType; server.Listener.AuthenticationManager.AuthenticationSchemes = authType;
server.Listener.AuthenticationManager.AllowAnonymous = allowAnonymous;
try try
{ {
server.Start(new DummyApplication(app)); server.Start(new DummyApplication(app));

View File

@ -11,8 +11,11 @@ namespace Microsoft.Net.Http.Server
{ {
public class AuthenticationTests public class AuthenticationTests
{ {
private static bool AllowAnoymous = true;
private static bool DenyAnoymous = false;
[Theory] [Theory]
[InlineData(AuthenticationSchemes.AllowAnonymous)] [InlineData(AuthenticationSchemes.None)]
[InlineData(AuthenticationSchemes.Negotiate)] [InlineData(AuthenticationSchemes.Negotiate)]
[InlineData(AuthenticationSchemes.NTLM)] [InlineData(AuthenticationSchemes.NTLM)]
// [InlineData(AuthenticationSchemes.Digest)] // [InlineData(AuthenticationSchemes.Digest)]
@ -21,21 +24,14 @@ namespace Microsoft.Net.Http.Server
public async Task AuthTypes_AllowAnonymous_NoChallenge(AuthenticationSchemes authType) public async Task AuthTypes_AllowAnonymous_NoChallenge(AuthenticationSchemes authType)
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address); Task<HttpResponseMessage> responseTask = SendRequestAsync(address);
var context = await server.AcceptAsync(); var context = await server.AcceptAsync();
Assert.NotNull(context.User); Assert.NotNull(context.User);
Assert.False(context.User.Identity.IsAuthenticated); Assert.False(context.User.Identity.IsAuthenticated);
if (authType == AuthenticationSchemes.AllowAnonymous) Assert.Equal(authType, context.Response.AuthenticationChallenges);
{
Assert.Equal(AuthenticationSchemes.None, context.Response.AuthenticationChallenges);
}
else
{
Assert.Equal(authType, context.Response.AuthenticationChallenges);
}
context.Dispose(); context.Dispose();
var response = await responseTask; var response = await responseTask;
@ -53,7 +49,7 @@ namespace Microsoft.Net.Http.Server
public async Task AuthType_RequireAuth_ChallengesAdded(AuthenticationSchemes authType) public async Task AuthType_RequireAuth_ChallengesAdded(AuthenticationSchemes authType)
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(authType, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address); Task<HttpResponseMessage> responseTask = SendRequestAsync(address);
@ -73,7 +69,7 @@ namespace Microsoft.Net.Http.Server
public async Task AuthType_AllowAnonymousButSpecify401_ChallengesAdded(AuthenticationSchemes authType) public async Task AuthType_AllowAnonymousButSpecify401_ChallengesAdded(AuthenticationSchemes authType)
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address); Task<HttpResponseMessage> responseTask = SendRequestAsync(address);
@ -100,7 +96,7 @@ namespace Microsoft.Net.Http.Server
| AuthenticationSchemes.NTLM | AuthenticationSchemes.NTLM
/* | AuthenticationSchemes.Digest TODO: Not implemented */ /* | AuthenticationSchemes.Digest TODO: Not implemented */
| AuthenticationSchemes.Basic; | AuthenticationSchemes.Basic;
using (var server = Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address); Task<HttpResponseMessage> responseTask = SendRequestAsync(address);
@ -126,7 +122,7 @@ namespace Microsoft.Net.Http.Server
public async Task AuthTypes_AllowAnonymousButSpecify401_Success(AuthenticationSchemes authType) public async Task AuthTypes_AllowAnonymousButSpecify401_Success(AuthenticationSchemes authType)
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(authType | AuthenticationSchemes.AllowAnonymous, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, AllowAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true); Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true);
@ -157,7 +153,7 @@ namespace Microsoft.Net.Http.Server
public async Task AuthTypes_RequireAuth_Success(AuthenticationSchemes authType) public async Task AuthTypes_RequireAuth_Success(AuthenticationSchemes authType)
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(authType, out address)) using (var server = Utilities.CreateHttpAuthServer(authType, DenyAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true); Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true);
@ -177,7 +173,7 @@ namespace Microsoft.Net.Http.Server
public async Task AuthTypes_RequireKerberosAuth_Success() public async Task AuthTypes_RequireKerberosAuth_Success()
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(AuthenticationSchemes.Kerberos, out address)) using (var server = Utilities.CreateHttpAuthServer(AuthenticationSchemes.Kerberos, DenyAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true); Task<HttpResponseMessage> responseTask = SendRequestAsync(address, useDefaultCredentials: true);
@ -197,7 +193,7 @@ namespace Microsoft.Net.Http.Server
public async Task MultipleAuthTypes_KerberosAllowAnonymousButSpecify401_ChallengesAdded() public async Task MultipleAuthTypes_KerberosAllowAnonymousButSpecify401_ChallengesAdded()
{ {
string address; string address;
using (var server = Utilities.CreateHttpAuthServer(AuthenticationSchemes.Kerberos | AuthenticationSchemes.AllowAnonymous, out address)) using (var server = Utilities.CreateHttpAuthServer(AuthenticationSchemes.Kerberos, AllowAnoymous, out address))
{ {
Task<HttpResponseMessage> responseTask = SendRequestAsync(address); Task<HttpResponseMessage> responseTask = SendRequestAsync(address);

View File

@ -14,10 +14,11 @@ namespace Microsoft.Net.Http.Server
private static int NextPort = BasePort; private static int NextPort = BasePort;
private static object PortLock = new object(); private static object PortLock = new object();
internal static WebListener CreateHttpAuthServer(AuthenticationSchemes authScheme, out string baseAddress) internal static WebListener CreateHttpAuthServer(AuthenticationSchemes authScheme, bool allowAnonymos, out string baseAddress)
{ {
var listener = CreateHttpServer(out baseAddress); var listener = CreateHttpServer(out baseAddress);
listener.AuthenticationManager.AuthenticationSchemes = authScheme; listener.AuthenticationManager.AuthenticationSchemes = authScheme;
listener.AuthenticationManager.AllowAnonymous = allowAnonymos;
return listener; return listener;
} }