#c# #nginx
Вопрос:
Я использую ASP.Net 5 для создания API и получения пользователя.Идентичность.Назовите его работающим нормально, пока я отлаживаю Kestrel, и вызовите метод из браузера. Но это дает мне 401 несанкционированный вызов при вызове либо от почтальона, либо после его развертывания на прокси-сервере Nginx Вот мой Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddHttpContextAccessor();
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
services.AddSingleton<ValidateAuthentication>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMiddleware<ValidateAuthentication>();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
internal class ValidateAuthentication : IMiddleware
{
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
if (context.User.Identity.IsAuthenticated)
await next(context);
else
await context.ChallengeAsync();
}
}
А вот и мой контроллер
[ApiController]
[Authorize(AuthenticationSchemes = NegotiateDefaults.AuthenticationScheme)]
public class UserController : ControllerBase
{
private readonly IHttpContextAccessor _httpContextAccessor;
public UserController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
[HttpGet]
[Route("api/user")]
[AllowAnonymous]
public string GetUserName()
{
string userName = _httpContextAccessor.HttpContext.User.Identity.Name;
return userName;
}
[HttpGet]
[Route("api/IsAuth")]
[AllowAnonymous]
public bool IsAuth()
{
bool isAuth = _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated;
return isAuth;
}
}