Récupérer les détails d'un utilisateur depuis l'Active Directory
Activer les roles dans le web.config (System.Web) :
<authentication mode="Windows" /> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
Ajouter les références suivantes :
using System.DirectoryServices; using System.DirectoryServices.AccountManagement;
1) Récupérer le login de l'utilisateur :
public static string GetUserName() { return HttpContext.Current.User.Identity.Name; }
2) Récupérer le prénom de l'utilisateur :
public static string GetFirstName() { string principal = GetUserName(); PrincipalContext ctx = new PrincipalContext(ContextType.Domain); UserPrincipal user = UserPrincipal.FindByIdentity(ctx,principal); return user.GivenName; }
A partir de cette méthode, tout est récupérable, il suffit de changer le GivenName par la propriété correspondante.
3) Tester un droit pour l'utilisateur connecté :
Après avoir ajouté cette chaine dans le web.config :
<appSettings> …… <add key="admin" value="Domaine\Droit"/> </appSettings>
public static bool UserIsAdmin() { return Roles.IsUserInRole(ConfigurationManager.AppSettings["admin"]); }