Quel est le meilleur moyen pour récupérer les SID de l'utilisateur?

Préalable Détail

  1. De travail .NET 2.0.
  2. Le code est dans une bibliothèque commune qui pourrait être appelée à partir de ASP.Net, Formes de Windows ou une application de Console.
  3. Cours d'exécution dans un Domaine Windows sur un réseau d'entreprise.

La Question

Quel est le meilleur moyen pour récupérer les SID de l'utilisateur? Je ne parle pas de l'identité qui est l'exécution de l'application, mais l'utilisateur qui accède à l'interface. Dans les applications d'arrière-plan de bureau et des applications basées sur ce qui devrait être l'identité fait de l'exécution de l'application, mais dans ASP.Net (sans impersionation) ce devrait être le HttpContext.Actuel.SID de l'utilisateur.

La Méthode Actuelle

C'est ce que j'ai droit maintenant. Il semble juste... mal. C'est méchant. Est-il une meilleure façon de le faire, ou certaines construit dans la classe qui le fait pour vous?

public static SecurityIdentifier SID
{
    get
    {
        WindowsIdentity identity = null;

        if (HttpContext.Current == null)
        {
            identity = WindowsIdentity.GetCurrent();
        }
        else
        {
            identity = HttpContext.Current.User.Identity as WindowsIdentity;
        }

        return identity.User;
    }
}

OriginalL'auteur Max Schmeling | 2009-07-31