Как аутентифицировать пользователя с помощью Windows аутентификации, на странице blazor, размещенной в службе Windows
Я разместил приложение Blazor (NET.5) в службе Windows. Это простой веб-интерфейс для вызова методов службы, но мне нужна проверка подлинности Windows для пользователя, подключающегося к странице Blazor. И если я отлаживаю(не ISSExpress) на локальном компьютере, то моя учетная запись Windows отображается, но при запуске службы на сервере я не вижу логина пользователя и не получаю авторизацию. Насколько я понимаю, хостинг предоставляется Kestrel при размещении в службе Windows. Что нужно сделать, чтобы получить логин пользователя входящего на страницу?
Мой Startup.cs
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddHostedService<Worker>();
services.AddSession();
services.Configure<HostOptions>(x => x.ShutdownTimeout = TimeSpan.FromMinutes(5));
services.AddAuthenticateCustom(Configuration["AppInit:AppName"], Configuration["AppInit:AppKey"]);
services.AddAuthorization();
app.UseSession();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>...
Я также использую AuthenticationCustomHandler внутри своего расширения при добавлении схемы авторизации.
public class AuthenticationCustomHandler : AuthenticationHandler<AuthenticationSchemeCustomOptions>
{
public const string ShemaName = "CustomAuthenticate";
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
// Make a new copy of the user for each request, they are mutable objects and
// things like ClaimsTransformation run per request.
WindowsIdentity winIdentity;
ClaimsPrincipal principal;
if (OperatingSystem.IsWindows())
{
//For now only Windows
winIdentity = WindowsIdentity.GetCurrent();
}
else
{
return AuthenticateResult.NoResult();
}
//here my logic authenticate based on Windows login
}
}
Я также пытался использовать пакет Negotiate для простого отображения User.Name на странице, но это не сработало для службы.