Ошибка 401.1 при вызове конечной точки веб-API с включенной аутентификацией Windows - PullRequest
0 голосов
/ 22 января 2019

Сценарий: У нас есть веб-приложение ASP.NET Core, а также служба ASP.NET Core Web.API.Они размещены на одном сервере (Windows 2016) и в одном домене, хотя и на разных веб-сайтах (у нас есть один для служб, а другой для приложений).Это приложение типа интрасети, и мы хотели бы иметь возможность передавать учетные данные Windows от пользователя клиента приложению, а также в рамках вызовов API.

Я включил проверку подлинности Windows для приложенияа также сервис в IIS.В настоящее время я не могу получить 401.1 при вызове конечной точки web.api через код приложения.Я могу просмотреть приложение, а также API в веб-браузере.

Код API:

В Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    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.UseHttpsRedirection();
    app.UseAuthentication();
    app.UseMvc();
}

In ValuesController.cs

[Authorize]
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] {"value1", "value2" };
    }

}

Код приложения:

В Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    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.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseAuthentication();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Вызов функции с использованием RestSharp(хотя HttpWebRequest также выдает 401)

private string GetRestResponse(string endpoint)
{
    var client = new RestClient(endpoint);
    var request = new RestRequest(Method.GET);
    request.UseDefaultCredentials = true;
    request.AddHeader("content-type", "application/json");
    IRestResponse response = client.Execute(request);

    return response.Content;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...