diferença entre http.context.user e thread.currentprincipal e quando usá-los?

Recentemente, deparei-me com um problema ao executar um aplicativo Web asp.net no visual studio 2008. Recebo o erro 'tipo não resolvido para o membro ... customUserPrincipal'. Ao rastrear vários grupos de discussão, parece que há um problema no servidor da Web do Visual Studio quando você atribui um objeto personalizado ao Thread.CurrentPrincipal.

No meu código, agora uso ...

HttpContext.Current.User = myCustomPrincipal
//Thread.CurrentPrincipal = myCustomPrincipal

Fico feliz por ter desviado o erro, mas ele pergunta: "Qual é a diferença entre esses dois métodos para definir um principal?". Existem outros fluxos de pilhaquestões relacionados às diferenças, mas eles não entram nos detalhes das duas abordagens.

Eu encontrei um post tentador que tinha o seguinte comentário grandioso, mas nenhuma explicação para apoiar suas afirmações ...

Use HttpConext.Current.User para todos os aplicativos da Web (ASPX / ASMX).

Use Thread.CurrentPrincipal para todos os outros aplicativos, como winForms, console e aplicativos de serviço do Windows.

Algum de vocês, gurus do security / dot.net, pode lançar alguma luz sobre esse assunto?

questionAnswers(3)

yourAnswerToTheQuestion