我有一个aspnetcore Web API,并且使用以下代码为Windows Auth配置了主机。
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls("http://TestServer:5000")
.UseStartup<Startup>()
.UseWebListener(options =>
{
options.Listener.AuthenticationManager.AuthenticationSchemes = Microsoft.Net.Http.Server.AuthenticationSchemes.NTLM;
//NOTE: Multiple auth assignments don't work in 1.0.0 - Wait for 1.1.* for the line below to start working
//See: https://github.com/aspnet/Announcements/issues/198
//options.Listener.AuthenticationManager.AllowAnonymous = true;
})
.Build();
host.Run();
使用以下
配置调用客户端HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true,
PreAuthenticate = true
};
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("http://TestServer:5000/");
client.DefaultRequestHeaders
.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
在我打电话的服务中,我可以访问主叫用户的ClaimsPrincipal身份。
我的问题是如何使用通过CreateClient方法初始化的TestServer客户端从集成测试中调用此服务。从集成测试调用时,确保设置标识的最佳方法是什么?
我也在使用XUnit以防您想知道。
非常感谢任何帮助或建议。