Aquí podría ser tu PUBLICIDAD


IPrincipal personalizado junto con WindowsAuthentication

votos
5

¿Hay alguna forma de combinar la autenticación de Windows de ASP.NET con un objeto IPrincipal / IIdentity personalizado? Necesito almacenar la dirección de correo electrónico del usuario y lo he hecho para la Autenticación de formularios usando un par IIdentity / IPrincipal personalizado que agregué al Context.CurrentUser durante el evento AuthenticateRequest.

¿Cómo podría hacer esto para lograrlo utilizando WindowsAuthentication?

Publicado el 12/03/2009 a las 22:00
fuente por usuario PHeiberg
En otros idiomas...        العربية       

2 respuestas

votos
3

Terminé refacturando mi solución inicial para reemplazar el Principal en lugar de la Identidad como originalmente pensé. Reemplazar la identidad resultó problemático, ya que me encontré con problemas de seguridad al crear una instancia de un nuevo WindowsPrincipal extendido.

public class ExtendedWindowsPrincipal : WindowsPrincipal
{
    private readonly string _email;

    public ExtendedWindowsPrincipal(WindowsIdentity ntIdentity, 
       string email) : base(ntIdentity)
    {
            _email = email;
    }

    public string Email
    {
        get { return _email; }
    }
}

En mi módulo de Autenticación, reemplacé el principal en el HttpContext así:

var currentUser = (WindowsIdentity)HttpContext.Current.User.Identity;
HttpContext.Current.User = 
    new ExtendedWindowsPrincipal(currentUser, userEmail);
Respondida el 27/03/2009 a las 03:13
fuente por usuario PHeiberg


Aquí podría ser tu PUBLICIDAD


votos
3

¿Tal vez podría crear su "ExtendedWindowsPrincipal" como una clase derivada basada en WindowsPrincipal, y simplemente agregar sus datos extra a la clase derivada?

De esta forma, su ExtendedWindowsPrincipal aún se reconocerá en cualquier lugar donde se necesite WindowsPricinpal.

O bien, dado que está hablando de usar Autenticación de Windows, probablemente esté en una red de Windows. ¿Existe alguna base de datos de Active Directory o de usuario en la que pueda buscar su dirección de correo electrónico que le interese en lugar de almacenándolo en el principal?

Bagazo

Respondida el 12/03/2009 a las 10:35
fuente por usuario marc_s