Existe-t-il une classe d'assistance Active Directory disponible quelque part? Je vérifie juste avant de réinventer la roue.Classe d'assistance Active Directory
J'ai besoin de
Valider un utilisateur dans AD.
Obtenez les rôles de ses membres.
Merci
Existe-t-il une classe d'assistance Active Directory disponible quelque part? Je vérifie juste avant de réinventer la roue.Classe d'assistance Active Directory
J'ai besoin de
Valider un utilisateur dans AD.
Obtenez les rôles de ses membres.
Merci
Dans .NET 3.5, vous voulez regarder dans System.DirectoryServices.AccountManagement. Pour plus tôt, les versions System.DirectoryServices ont ce dont vous avez besoin, mais c'est un peu plus de travail.
using (var context = new PrincipalContext(ContextType.Domain))
{
var valid = context.ValidateCredentials(username, password);
using (var user = UserPrincipal.FindByIdentity(context,
IdentityType.SamAccountName,
username))
{
var groups = user.GetAuthorizationGroups();
}
}
espace de noms System.DirectoryServices.ActiveDirectory
http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.aspx
Ce qui est vraiment pour interagir avec et de gérer les aspects administratifs de ActiveDirectory - schéma, les serveurs, les sites, les forêts, etc. L'utilisateur Les composants liés sont dans un espace de noms différent. – tvanfosson
Merci pour la correction, dûment noté –
Voici quelques exemples de code que je l'ai utilisé:
using System.DirectoryServices;
public static string GetProperty(SearchResult searchResult,
string PropertyName)
{
if (searchResult.Properties.Contains(PropertyName))
return searchResult.Properties[PropertyName][0].ToString();
else
return string.Empty;
}
public MyCustomADRecord Login(string UserName, string Password)
{
string adPath = "LDAP://www.YourCompany.com/DC=YourCompany,DC=Com";
DirectorySearcher mySearcher;
SearchResult resEnt;
DirectoryEntry de = new DirectoryEntry(adPath, UserName, Password,
AuthenticationTypes.Secure);
mySearcher = new DirectorySearcher(de);
string adFilter = "(sAMAccountName=" + UserName + ")";
mySearcher.Filter = adFilter;
resEnt = mySearcher.FindOne();
return new MyCustomADRecord()
{
UserName = GetProperty(resEnt, "sAMAccountName"),
GUID = resEnt.GetDirectoryEntry().NativeGuid.ToString(),
DisplayName = GetProperty(resEnt, "displayName"),
FirstName = GetProperty(resEnt, "givenName"),
MiddleName = GetProperty(resEnt, "initials"),
LastName = GetProperty(resEnt, "sn"),
Company = GetProperty(resEnt, "company"),
JobTitle = GetProperty(resEnt, "title"),
Email = GetProperty(resEnt, "mail"),
Phone = GetProperty(resEnt, "telephoneNumber"),
ExtensionAttribute1 = GetProperty(resEnt, "extensionAttribute1")
};
}
Je vous remercie de partager cela. –
Je développe sur un ordinateur portable ne faisant pas partie du domaine. Puis-je transmettre une telle demande à AD? –
Si vos utilisateurs sont locaux sur la machine, vous pouvez utiliser ContextType.Machine au lieu de ContextType.Domain pour centrer vos requêtes sur le magasin d'autorisations local. – tvanfosson