Add an option to disable windown auth
This commit is contained in:
parent
8ee803d255
commit
cc384ff272
|
|
@ -49,20 +49,24 @@ namespace Microsoft.AspNet.IISPlatformHandler
|
||||||
UpdateScheme(httpContext);
|
UpdateScheme(httpContext);
|
||||||
|
|
||||||
UpdateRemoteIp(httpContext);
|
UpdateRemoteIp(httpContext);
|
||||||
|
if (_options.FlowWindowsAuthentication)
|
||||||
var winPrincipal = UpdateUser(httpContext);
|
{
|
||||||
|
var winPrincipal = UpdateUser(httpContext);
|
||||||
var handler = new AuthenticationHandler(httpContext, _options, winPrincipal);
|
var handler = new AuthenticationHandler(httpContext, _options, winPrincipal);
|
||||||
AttachAuthenticationHandler(handler);
|
AttachAuthenticationHandler(handler);
|
||||||
|
try
|
||||||
try
|
{
|
||||||
|
await _next(httpContext);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
DetachAuthenticationhandler(handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
await _next(httpContext);
|
await _next(httpContext);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
DetachAuthenticationhandler(handler);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UpdateScheme(HttpContext httpContext)
|
private static void UpdateScheme(HttpContext httpContext)
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,12 @@ namespace Microsoft.AspNet.IISPlatformHandler
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AutomaticAuthentication { get; set; } = true;
|
public bool AutomaticAuthentication { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If true authentication middleware will try to authenticate using platform handler windows authentication
|
||||||
|
/// If false authentication middleware won't be added
|
||||||
|
/// </summary>
|
||||||
|
public bool FlowWindowsAuthentication { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Additional information about the authentication type which is made available to the application.
|
/// Additional information about the authentication type which is made available to the application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@ using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.Builder;
|
using Microsoft.AspNet.Builder;
|
||||||
|
using Microsoft.AspNet.Http.Features.Authentication;
|
||||||
|
using Microsoft.AspNet.Http.Internal;
|
||||||
|
using Microsoft.AspNet.IISPlatformHandler;
|
||||||
using Microsoft.AspNet.TestHost;
|
using Microsoft.AspNet.TestHost;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -108,5 +111,51 @@ namespace Microsoft.AspNet.IISPlatformHandler
|
||||||
await server.CreateClient().SendAsync(req);
|
await server.CreateClient().SendAsync(req);
|
||||||
Assert.True(assertsExecuted);
|
Assert.True(assertsExecuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task AddsAuthenticationHandlerByDefault()
|
||||||
|
{
|
||||||
|
var assertsExecuted = false;
|
||||||
|
|
||||||
|
var server = TestServer.Create(app =>
|
||||||
|
{
|
||||||
|
app.UseIISPlatformHandler();
|
||||||
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
var auth = (IHttpAuthenticationFeature)context.Features[typeof(IHttpAuthenticationFeature)];
|
||||||
|
Assert.NotNull(auth);
|
||||||
|
Assert.IsAssignableFrom<AuthenticationHandler>(auth.Handler);
|
||||||
|
assertsExecuted = true;
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var req = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
await server.CreateClient().SendAsync(req);
|
||||||
|
Assert.True(assertsExecuted);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task DoesNotAddAuthenticationHandlerIfWindowsAuthDisabled()
|
||||||
|
{
|
||||||
|
var assertsExecuted = false;
|
||||||
|
|
||||||
|
var server = TestServer.Create(app =>
|
||||||
|
{
|
||||||
|
app.UseIISPlatformHandler(options => options.FlowWindowsAuthentication = false);
|
||||||
|
app.Run(context =>
|
||||||
|
{
|
||||||
|
var auth = (IHttpAuthenticationFeature)context.Features[typeof(IHttpAuthenticationFeature)];
|
||||||
|
Assert.Null(auth);
|
||||||
|
assertsExecuted = true;
|
||||||
|
return Task.FromResult(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var req = new HttpRequestMessage(HttpMethod.Get, "");
|
||||||
|
await server.CreateClient().SendAsync(req);
|
||||||
|
Assert.True(assertsExecuted);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue