Lluís Franco on Geeks.ms
  • Home

Accediendo al directorio activo de la organización desde .NET (II)

  • By lfranco
  • Jun-30-2008
  • Sin categoría
  • 4 Comments.

User

En el post anterior vimos que en ocasiones nuestra aplicación deberá acceder a los datos que contiene el directorio activo de nuestra organización, ya sea para buscar elementos, validar credenciales, etc.

Hoy nos centraremos en los objetos del framework que nos permiten realizar esto, empezando por el objeto WindowsIdentity, que nos acompaña desde la versión 1.0 del framework, y que representa un usuario de Windows.

WindowsIdentity

Representa un usuario de Windows. Dispone de un método GetCurrent() que devuelve una referencia al usuario de Windows que está ejecutando la aplicación y que por defecto será el usuario actual de Windows.

En nuestro ejercicio vamos a utilizar este objeto para mostrar en la barra de estado algo de información sobre el usuario actual. El nombre y token, así como el contexto de suplantación y diversa información cómo si está autenticado, es de sistema, etc.

LDAPServices_footer

El código es muy sencillo y para usarlo sólo debemos tener en cuenta haber importado el espacio de nombres System.Security.Principal:

private void RefreshUserInformation()
{
    WindowsIdentity user = WindowsIdentity.GetCurrent();
    lblUser.Text = string.Format("User: {0}", user.Name);
    lblToken.Text = string.Format("Token: {0}", user.Token.ToString());
    lblImpersonating.Text = string.Format("Impersonating: {0}", user.ImpersonationLevel.ToString());
    lblIsAnonymous.Text = string.Format("Is Anonymous: {0}", user.IsAnonymous.ToString());
    lblIsAuthenticated.Text = string.Format("Is Authenticated: {0}", user.IsAuthenticated.ToString());
    lblIsGuest.Text = string.Format("Is Guest: {0}", user.IsGuest.ToString());
    lblIsSystem.Text = string.Format("Is System: {0}", user.IsSystem.ToString());
    if (sec.ImpersonationContext == null)
    {
        cmdImpersonateApplicationAsUser.Enabled = true;
        lblUser.ForeColor = Color.Black;
        lblImpersonating.ForeColor = Color.Black;
    }
    else
    {
        cmdImpersonateApplicationAsUser.Enabled = false;
        lblUser.ForeColor = Color.Red;
        lblImpersonating.ForeColor = Color.Red;
    }
    cmdUndoImpersonation.Enabled = !cmdImpersonateApplicationAsUser.Enabled;
}

Lo único a destacar es que en caso de que exista suplantación (ImpersonationContext distinto de nulo), mostraremos algunos campos en color rojo, para destacar que este usuario es distinto del que inició sesión en Windows.

LDAPServices

En este proyecto he creado una clase que proporciona una serie de funcionalidades comunes, su nombre es LDAPServices y encapsula una serie de métodos estáticos, para facilitar el trabajo con LDAP. En los próximos posts detallaremos el uso de estos métodos:

LDAPServices_class

SecurityContext

También aparece la clase llamada SecurityContext que ya hemos visto en la serie de posts sobre acceder a la caché de IE, que encapsula toda la lógica necesaria para impersonar nuestra aplicación y que se ejecute con otras credenciales de usuario de Windows.

SecurityContext_class

Esta clase expone una propiedad de tipo WindowsImpersonationContext que devuelve información sobre si está realizando suplantación, y que en caso afirmativo permite terminarla mediante el método Undo(). También expone dos métodos LogonUser y ImpersonateUser, que permiten respectivamente validar unas credenciales de usuario contra un dominio y empezar un contexto de suplantación.

En el próximo post veremos cómo realizar esta suplantación y cómo recabar más información del usuario actual (por ejemplo a que grupos de Windows pertenece el usuario actual).

Hasta entonces!

Comments

4 Responsesso far

  1. lfranco dice:
    1 julio, 2008 a las 12:05 pm

    🙂
    Hola Espinete,
    Por supuesto. Esa es mi intención, al igual que con la serie de acceder a la caché de IE:
    http://geeks.ms/blogs/lfranco/archive/2008/06/10/acceder-a-la-cach-233-de-internet-explorer-v-y-final.aspx

    Espero tener tiempo para terminar la serie esta semana, o como mucho a principios de la que viene…

    Saludos desde Andorra,

    Responder
  2. anonymous dice:
    4 julio, 2008 a las 10:14 am

    moltes gracies lluis!

    ponlo lo antes que puedas, que yo necesito la librería lo antes posible 🙂

    Responder
  3. anonymous dice:
    4 julio, 2008 a las 10:14 am

    moltes graies lluis!

    ponlo lo antes posible que yo necesito la librería cuanto antes.

    Responder
  4. lfranco dice:
    4 julio, 2008 a las 4:48 pm

    🙂
    Ya está publicado el tercer post de la serie, que incluye el código de ejemplo:
    http://geeks.ms/blogs/lfranco/archive/2008/07/04/accediendo-al-directorio-activo-de-la-organizaci-243-n-desde-net-iii.aspx

    Saludos,

    Responder

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

← Previous Post Next Post →

Tags

async Back best practices

Entradas recientes

  • Video de mi charla en la #dotNetSpain2016
  • I’m back. Miss me?
  • Office365 actualizado a 2013 para nuevas suscripciones
  • Serializar listas genéricas en aplicaciones WinRT
  • [TPL] Problemas de concurrencia

Comentarios recientes

  • Darling Chavez en Tip: Mostrar objetos relacionados en DevExpress GridControl
  • Alexander en [TPL] Problemas de concurrencia
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • anonymous en HowTo: Crear una pantalla de inicio (splash screen)

Archivos

  • marzo 2016
  • marzo 2013
  • octubre 2012
  • septiembre 2012
  • agosto 2012
  • febrero 2012
  • diciembre 2011
  • noviembre 2011
  • octubre 2011
  • septiembre 2011
  • agosto 2011
  • junio 2011
  • mayo 2011
  • abril 2011
  • febrero 2011
  • enero 2011
  • diciembre 2010
  • noviembre 2010
  • octubre 2010
  • agosto 2010
  • julio 2010
  • marzo 2010
  • febrero 2010
  • enero 2010
  • diciembre 2009
  • noviembre 2009
  • octubre 2009
  • septiembre 2009
  • agosto 2009
  • julio 2009
  • junio 2009
  • mayo 2009
  • abril 2009
  • marzo 2009
  • febrero 2009
  • enero 2009
  • diciembre 2008
  • noviembre 2008
  • octubre 2008
  • septiembre 2008
  • agosto 2008
  • julio 2008
  • junio 2008
  • mayo 2008
  • abril 2008
  • marzo 2008
  • febrero 2008
  • enero 2008
  • diciembre 2007
  • noviembre 2007
  • octubre 2007
  • septiembre 2007
  • agosto 2007
  • abril 2007
  • febrero 2007
  • enero 2007

Categorías

  • .NET
  • C#
  • Channel9
  • Evento
  • Personal
  • Videos

Meta

  • Acceder
  • RSS de las entradas
  • RSS de los comentarios
  • WordPress.org
About This Site

A cras tincidunt, ut tellus et. Gravida scel ipsum sed iaculis, nunc non nam. Placerat sed phase llus, purus purus elit.

Archives Widget
  • January 2010
  • December 2009
  • November 2009
  • October 2009
Categories
  • Entertainment
  • Technology
  • Sports & Recreation
  • Jobs & Lifestyle
Search
  • facebook
  • twitter
  • rss

Powered by WordPress  |  Business Directory by InkThemes.

This site uses cookies: Find out more.