Identidad personalizada con MVC5 y OWIN

Intento agregar propiedades personalizadas al ApplicationUser para un sitio web usando la autenticación MVC5 y OWIN. he leídohttps://stackoverflow.com/a/10524305/264607 y me gusta cómo se integra con el controlador base para facilitar el acceso a las nuevas propiedades. Mi problema es que cuando configuro la propiedad HTTPContext.Current.User en mi nuevo IPrincipal obtengo un error de referencia nulo:

[NullReferenceException: Object reference not set to an instance of an object.]
   System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +127
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

Aquí está mi código:

    protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

            ApplicationUser user = userManager.FindByName(HttpContext.Current.User.Identity.Name);

            PatientPortalPrincipal newUser = new PatientPortalPrincipal();
            newUser.BirthDate = user.BirthDate;
            newUser.InvitationCode = user.InvitationCode;
            newUser.PatientNumber = user.PatientNumber;

            //Claim cPatient = new Claim(typeof(PatientPortalPrincipal).ToString(), );

            HttpContext.Current.User = newUser;
        }
    }

public class PatientPortalPrincipal : ClaimsPrincipal, IPatientPortalPrincipal
{
    public PatientPortalPrincipal(ApplicationUser user)
    {
        Identity = new GenericIdentity(user.UserName);
        BirthDate = user.BirthDate;
        InvitationCode = user.InvitationCode;
    }

    public PatientPortalPrincipal() { }

    public new bool IsInRole(string role)
    {
        if(!string.IsNullOrWhiteSpace(role))
            return Role.ToString().Equals(role);

        return false;
    }

    public new IIdentity Identity { get; private set; }
    public WindowsBuiltInRole Role { get; set; }
    public DateTime BirthDate { get; set; }
    public string InvitationCode { get; set; }
    public string PatientNumber { get; set; }
}

public interface IPatientPortalPrincipal : IPrincipal
{

    WindowsBuiltInRole Role { get; set; }
    DateTime BirthDate { get; set; }
    string InvitationCode { get; set; }
    string PatientNumber { get; set; }
}

No he encontrado mucha documentación sobre cómo hacer esto, he leído estos artículos:

http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx

http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx

Los comentarios en el segundo enlace me señalaron que tal vez use reclamos (http://msdn.microsoft.com/en-us/library/ms734687.aspx?cs-save-lang=1&cs-lang=csharp), pero el artículo vinculado a no muestra cómo agregarlos a unIPrincipal&nbsp;(Que es queHttpContext.Current.User&nbsp;es), o en qué lugar de la tubería se supone que debes agregarlos a unClaimsIdentity&nbsp;(que es la clase concreta delUser&nbsp;es). Me estoy inclinando hacia el uso de reclamos, pero necesito saber dónde agregar estos nuevos reclamos al usuario.

Incluso si las reclamaciones son el camino a seguir, tengo curiosidad por saber qué estoy haciendo mal con mi IPrincipal personalizado, ya que parece que he implementado todo lo que requiere.