Pergunta

Eu tenho certeza que é um requisito muitos desenvolvedores têm enfrentado antes:. Negócio precisa de uma trilha de auditoria para saber quem está realizando ações em seu sistema

Independentemente de como você escolher armazenar a informação auditada, o núcleo do problema é a forma de identificar o usuário atual.

Eu quero componentes de escrita, que vão desde pequenas classes de modelo de domínio para componentes de serviço, todos os que podem seguramente ser chamados a partir de qualquer um dos aplicativos seguinte host:

  • A aplicação desktop do Windows.
  • website Um ASP.NET hospedado no IIS.
  • Um serviço de WCF hospedado no IIS.
  • Um serviço de WCF hospedado em um serviço do Windows.

Dada a variedade de tecnologias, os vários modelos de autenticação e ter que conta para o conceito de um usuário "anonymous", eu não estou claro sobre uma estratégia a utilizar para obter a identidade de quem invocou meu componente de forma centralizada .

Qual de vocês pode popular inteligentes sugerem uma abordagem para lidar com isso?

Foi útil?

Solução

Eu geralmente requerem que os aplicativos criados Thread.CurrentPrincipal a um principal cuja identidade representa o usuário atual. Isso pode ser feito na inicialização do aplicativo (usando WindowsIdentity.GetCurrent ()) em um cliente (WinForms ou Console) aplicativo, a partir HttpContext.Current.User ou Roles.GetCurrentUser () em um aplicativo ASP.NET ou WCF hospedado no IIS, etc .

Em seguida, nos componentes de nível mais baixo você simplesmente usar Thread.CurrentPrincipal.Identity para auditoria.

Editar (Em resposta ao comentário) - nota que Thread.CurrentPrincipal.Identity não tem nada a ver com o contexto do segmento de segurança:. Esta é representado pelo WindowsIdentity e podem ser recuperadas usando WindowsIdentity.GetCurrent e alteradas usando WindowsIdentity.Impersonate

Outras dicas

A melhor abordagem, utilizando as técnicas mais atuais, é provavelmente usar do Windows Identity Foundation .

WIF é projetado para questões de identidade do usuário pega em várias tecnologias que utilizam .NET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top