Pregunta

Estoy seguro de que es un requisito muchos desarrolladores han enfrentado antes:. Negocio necesita una pista de auditoría para saber quién está llevando a cabo acciones en su sistema

A pesar de lo que usted elija almacenar la información auditada, el núcleo de este problema es cómo identificar el usuario actual.

Quiero escribir componentes, que van desde pequeñas clases del modelo de dominio a los componentes de servicio, todo lo que con seguridad se puede llamar desde cualquiera de las siguientes aplicaciones host:

  • Una aplicación de escritorio de Windows.
  • Un sitio web de ASP.NET alojado en IIS.
  • Un servicio WCF alojado en IIS.
  • Un servicio WCF alojado en un servicio de Windows.

Dada la variedad de tecnologías, los diferentes modelos de autenticación y tener que tener en cuenta el concepto de un usuario "anónimo", no me queda claro en una estrategia a utilizar para obtener la identidad de quien lo invoca mi componente de una forma centralizada .

Puede alguno de ustedes popular inteligentes sugerir un enfoque para hacer frente a esto?

¿Fue útil?

Solución

Me generalmente requieren que las aplicaciones establecen Thread.CurrentPrincipal a una entidad cuya identidad representa el usuario actual. Esto se puede hacer en el inicio de la aplicación (utilizando WindowsIdentity.GetCurrent ()) en un cliente de Windows Forms (o consola), aplicación de HttpContext.Current.User o Roles.GetCurrentUser () en una aplicación ASP.NET o WCF alojado en IIS, etc. .

A continuación, en los componentes de nivel inferior sólo tiene que utilizar Thread.CurrentPrincipal.Identity para la auditoría.

Editar . (En respuesta al comentario) - Thread.CurrentPrincipal.Identity en cuenta que no tiene nada que ver con el contexto de seguridad de la rosca: esto está representado por el WindowsIdentity y puede ser recuperada usando WindowsIdentity.GetCurrent y cambiar usando WindowsIdentity.Impersonate

Otros consejos

El mejor enfoque, utilizando las técnicas más actuales, es probablemente usar de Windows Identity Foundation .

WIF está diseñado para manejar los problemas de identidad de usuario a través de múltiples tecnologías que utilizan .NET.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top