asp.core Windows身份验证集成测试失败,未配置身份验证处理程序

时间:2017-08-08 00:46:46

标签: asp.net

我有一个使用Windows身份验证的ASP.Core Web应用程序我正在尝试为其设置集成测试。

在启动内部,授权配置如下

services.Configure<IISOptions>(options =>
        {
            options.ForwardWindowsAuthentication = true;
        });
        services.AddAuthorization(options =>
        {
            options.AddPolicy("SiteRead", policy => policy.RequireAssertion(
                context => context.User.HasClaim(
                    x => x.Value == "groupSidHere" 
                )));
        });
        services.AddMvc(config =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        });

测试如下

        var server = new TestServer(builder);
        var client = server.CreateClient();

        var response = await client.GetAsync("/");
        response.EnsureSuccessStatusCode();

测试失败并带有以下回复

InvalidOperationException:没有配置身份验证处理程序来处理该方案:自动

我能够找到的集成测试的所有文档都没有涵盖这种情况(windows auth)。有没有人找到解决方案?

1 个答案:

答案 0 :(得分:0)

看到this issue,他们说:

  

我们最终通过创建一个小的库来解决对TestServer的Windows身份验证的需求,该库会将一些Windows身份验证服务注入到管道中以模仿IIS提供的行为-您可以在

中找到它

您将找到他们的库“ IntelliTect.AspNetCore.TestHost.WindowsAuth” here

我遇到了同样的问题,那个图书馆对我有用!

它实际上注入了真实的Windows身份验证数据,而不仅仅是模拟数据。