Vorrei ottenere l'appartenenza a un gruppo di un utente in una ActiveDirectory, senza essere nel dominio. Quando eseguo questo all'interno del dominio, tutto va bene.Richiedere i ruoli di un utente in AD quando il chiamante non è nel dominio
var context = new PrincipalContext(ContextType.Domain);
var principal = UserPrincipal.FindByIdentity(context, IdentityType.Name, "administrator");
foreach (var authorizationGroup in principal.GetAuthorizationGroups())
{
Console.WriteLine(authorizationGroup.Name);
}
Tuttavia, quando si esegue fuori del dominio, devo specificare il PrincipalContext trovano questo:
var context = new PrincipalContext(ContextType.Domain, "10.0.1.255", "DC=test,DC=ad,DC=be", "administrator", "password");
Quando ho eseguito questo codice, ottengo un'eccezione quando eseguo principal.GetAuthorizationGroups()
. L'eccezione che ottengo è:
System.DirectoryServices.AccountManagement.PrincipalOperationException: Information about the domain could not be retrieved (1355).
at System.DirectoryServices.AccountManagement.Utils.GetDcName(String computerName, String domainName, String siteName, Int32 flags)
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()
at System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsDomainName()
at System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p)
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper()
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups()
Ho avuto questo problema. L'esecuzione di "nslookup yourdomain" dovrebbe risolversi nel tuo DC. – T3hc13h