Me gustaría obtener membresías de un grupo de usuarios en un ActiveDirectory, sin estar en el dominio. Cuando ejecuto esto dentro del dominio, todo está bien.Solicitar las funciones de un usuario en AD cuando la persona que llama no está en el 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);
}
Sin embargo, cuando corro fuera del dominio, que tiene que especificar el PrincipalContext Lie este:
var context = new PrincipalContext(ContextType.Domain, "10.0.1.255", "DC=test,DC=ad,DC=be", "administrator", "password");
Cuando ejecuto el código, me sale una excepción cuando ejecuto principal.GetAuthorizationGroups()
. La excepción que recibo es:
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()
Tuve este problema. La ejecución de "nslookup yourdomain" debe resolverse en su DC. – T3hc13h