Quel est le meilleur moyen pour récupérer les SID de l'utilisateur?
Préalable Détail
- De travail .NET 2.0.
- 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.
- 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
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'il y est une meilleure façon d'en arriver à cette info, vous avez pour obtenir à la WindowsPrincipal en quelque sorte et .NET est plutôt propre API de résumés, derrière l'Utilisateur de l'objet. Je venais de quitter cette belle et enveloppé dans une méthode et l'appeler un jour.
Bon, ok, il y a une chose que vous devez faire (à moins que vos utilisateurs web sont toujours va être WindowsIdentity), ce qui serait à vérifier la nullité de l'identité et de les traiter selon les règles que vous avez.
OriginalL'auteur Wyatt Barnett
La WindowsIdentity classe est la classe construite dans la classe qui le fait pour vous". Vous avez aussi simple solution que vous allez obtenir le vraiment, tant que vous avez un valide WindowsIdentity de travailler avec.
Sinon, si vous avez le nom d'utilisateur de l'utilisateur en question et vous souhaitez obtenir le SID directement à partir de l'ANNONCE, vous pouvez créer votre propre bibliothèque d'utiliser l'espace de noms DirectoryServices et de récupérer les DirectoryEntry pour votre utilisateur (c'est un processus assez complexe comme DirectoryServices est compliqué). Vous pouvez même utiliser LDAP pour l'obtenir si vous avez un besoin.
OriginalL'auteur Joel Etherton
Sans l'utilisation de librairies tierces, Ce code vous donnera des résultats corrects, si l'utilisateur a changé son nom d'utilisateur.
OriginalL'auteur Garric