Мой ответ может вас не устраивать, но может помочь.В моем приложении ASP.NET Core MVC администраторы должны выдавать себя за других пользователей.Это приложение для внутренней сети, и, очевидно, пользователи проходят проверку подлинности Windows.Это делается благодаря запросу ajax к этому действию контроллера:
public async Task<JsonResult> UserImpersonation(IdentityExtension userIdentity)
IdentityExtension - это пользовательский класс, для которого вы можете наблюдать подпись ниже:
public class IdentityExtension : IIdentity
{
public IdentityExtension()
{ }
public IdentityExtension(string name)
{
this.Name = name;
}
public string AuthenticationType => "Kerberos";
public bool IsAuthenticated => true;
public string Name { get; set; }
}
Метод UserImpersonation возвращает успехсостояние метода ReplaceUser, который обновляет HttpContext.User следующим образом:
this.HttpContext.User = identity as ClaimsPrincipal;
return true;
идентификатор, являющийся экземпляром IdentityExtension.
Я надеюсь, что мое решение может быть адаптировано к вашему варианту использования!