Tengo un problema con la integración de mi servicio web ASP.NET con una configuración de Active Directory, y utilizándolo para autenticar usuarios y consultar con grupos de AD de los que son miembros y si tienen Permisos para usar mi aplicación personalizada.Obteniendo grupos de usuarios en Active Directory
Mi aplicación personalizada tiene sus propios permisos y los administradores configuran grupos de Active Directory que permiten el uso de la aplicación personalizada.
El problema que tengo es cuando un usuario de un bosque diferente de Trusted Trusted, con plena confianza bidireccional, intenta iniciar sesión. No puedo obtener una lista de sus grupos del servidor AD mis servicios web ASP.NET se comunica con. El servicio web ASP.NET solo tiene acceso al servidor AD (AD Main), no al controlador AD de confianza (Secundario AD).
El usuario es un miembro del dominio (AD Secundario), y puedo autenticar a ese usuario contra el dominio (AD Principal), pero no puedo obtener una lista de grupos del dominio (AD Principal) cuando el el usuario está en el dominio (AD Secundario).
He intentado este código.
StringCollection groupids = new StringCollection();
try
{
DirectoryLibrary dirLib = new DirectoryLibrary();
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + domain,username, password);
if (directoryEntry != null)
{
//Enum the properties so we can see what is in them
foreach (string propname in directoryEntry.Properties.PropertyNames)
{
Debug.WriteLine(propname);
}
object obGroups = directoryEntry.Invoke("Groups");
foreach (object ob in (IEnumerable)obGroups)
{
// Create object for each group.
DirectoryEntry obGpEntry = new DirectoryEntry(ob);
groupids.Add(obGpEntry.NativeGuid);
}
}
}
catch (DirectoryServicesCOMException ex) { throw ex; }
He intentado alejarme del objeto DirectoryEntry, algo como esto.
List<GroupPrincipal> result = new List<GroupPrincipal>();
StringCollection groupids = new StringCollection();
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, domain, userName, password);
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);
// if found - grab its groups
if (user != null)
{
PrincipalSearchResult<Principal> groups = user.GetGroups();
// iterate over all groups
foreach (Principal p in groups)
{
// make sure to add only group principals
if (p is GroupPrincipal)
{
groupids.Add(p.DisplayName);
}
}
}
embargo, no consigo el usuario y no puedo obtener una lista de los grupos de ese usuario en el otro dominio. Cualquier ayuda sería apreciada.
He [previamente tenía] (http://serverfault.com/questions/358102/inconsistent-information-in-active -directory-members-and-member-of-properties) un pequeño mundo de dolor con la membresía del grupo AD. Buena suerte, es todo lo que puedo decir ... – AakashM
aún no hemos encontrado una solución, pero parece que vamos a instalar ADFS –