В итоге я реорганизовал свое первоначальное решение, чтобы заменить Принципала вместо Идентичности, как я первоначально думал. Замена удостоверения оказалась проблематичной, поскольку я столкнулся с проблемами безопасности при создании экземпляра нового расширенного WindowsPrincipal.
public class ExtendedWindowsPrincipal : WindowsPrincipal
{
private readonly string _email;
public ExtendedWindowsPrincipal(WindowsIdentity ntIdentity,
string email) : base(ntIdentity)
{
_email = email;
}
public string Email
{
get { return _email; }
}
}
В моем модуле аутентификации я заменил принципал на HttpContext следующим образом:
var currentUser = (WindowsIdentity)HttpContext.Current.User.Identity;
HttpContext.Current.User =
new ExtendedWindowsPrincipal(currentUser, userEmail);