Я пытаюсь использовать проверку подлинности Windows в веб-интерфейсе .net core 2.1 с интерфейсом Angular 6.По сути, я пытаюсь получить имя пользователя Windows на странице.Насколько я понимаю, для достижения этого мне нужно сделать вызов в API (используя withCredentials по запросу клиента), а затем в API должно быть заполнено свойство User.Identity.Name - но оно всегда нулевое.
Я не знаю, что я что-то упустил или мое понимание просто неверно ..
В файле launchSettings.json у меня есть:
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:2821",
"sslPort": 44341
}
}
Мой запуск.cs выглядит следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<IISOptions>(options => {
options.AutomaticAuthentication = true;
});
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseAuthentication();
app.UseMvc();
}
Мой Program.cs выглядит следующим образом:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseIISIntegration()
.UseStartup<Startup>();
}
На клиенте моя угловая служба выглядит так:
var headers = new HttpHeaders({ 'Content-Type': 'application/json',
'Accept': 'application/json' });
return this.http.get(environment.endpointBaseUrl + '/api/User/GetUserInfo',
{ headers: headers, withCredentials: true});
Если я украшаю свое действие Controller с помощью Authorize, я получаю эту ошибку: InvalidOperationException: не была указана схема authenticationScheme, и не было найдено DefaultChallengeScheme
Если действие Controller не оформлено с помощью Authorize User.Identity.Name равно null.
Я ударил стену с этим, поэтому любая помощь будет великолепна.Спасибо.