Cómo trabajar con confianzas

Las siguientes clases y enumeraciones se utilizan con las confianzas de Servicios de dominio de Active Directory.

En las siguientes secciones se muestra cómo utilizar el espacio de nombres System.DirectoryServices.ActiveDirectory para trabajar con las confianzas de Servicios de dominio de Active Directory.

Dirección de confianzas

La dirección de confianzas se representa mediante los miembros de la enumeración TrustDirection. La dirección de una confianza es siempre relativa al lado único de una confianza. Por ejemplo, si el dominio A tiene una relación de confianza entrante con el dominio B, éste tiene una relación de confianza saliente con el dominio A.

Creación de confianzas

La creación de una confianza es un proceso de dos pasos. La secuencia normal de eventos es que se crea un lado de una relación de confianza y, después, el otro lado de la confianza. Una vez que se hayan creado ambos lados de la confianza, se establece la confianza. Ambos lados de la relación de confianza requieren la misma contraseña al crear el lado.

Para las confianzas de dominio, el método CreateTrustRelationship se utiliza para crear mediante programación ambos lados de una relación de confianza con una llamada a un método único. Este método creará y utilizará una contraseña para establecer la confianza. El método CreateTrustRelationship se utiliza para realizar la misma acción para las confianzas de bosque.

El método CreateLocalSideOfTrustRelationship se utiliza para crear sólo un lado de una relación de confianza de dominio. Para establecer la confianza, el llamador debe proporcionar la misma contraseña a la llamada en ambos lados de la confianza. Esta contraseña sólo se utiliza para la creación de la confianza y no tiene ninguna relación con la contraseña de ninguna cuenta. Para que este método tenga éxito, la dirección de las confianzas debe ser correcta en ambas llamadas. Este método es útil cuando un lado de una confianza se crea mediante programación y el otro lado se crea manualmente. Este método también se puede utilizar para crear mediante programación los dos lados de la confianza en momentos distintos. El método CreateLocalSideOfTrustRelationship se utiliza para realizar la misma acción para las confianzas de bosque.

Obtención de información acerca de una confianza

Para las confianzas de dominio, se utiliza el método GetTrustRelationship para obtener un objeto TrustRelationshipInformation que represente una confianza entre dos dominios. El método GetAllTrustRelationships se utiliza para obtener un objeto TrustRelationshipInformationCollection que contenga todas las confianzas que el dominio ha establecido. Los métodos GetTrustRelationship y GetAllTrustRelationships se utilizan para realizar las mismas acciones para las confianzas de bosque.

Comprobación de confianzas

En las confianzas de bosque, se utilizan los métodos VerifyTrustRelationship y VerifyOutBoundTrustRelationship para comprobar que una confianza existente entre dos dominios es válida. El método VerifyOutBoundTrustRelationship sólo se utiliza para comprobar una confianza saliente, mientras que el método VerifyOutBoundTrustRelationship se puede utilizar para comprobar todos los tipos de confianza. Los métodos VerifyTrustRelationship y VerifyOutBoundTrustRelationship se utilizan para realizar las mismas acciones para las confianzas de bosque. Si la confianza existente no se puede comprobar, todos estos métodos iniciarán una excepción de ActiveDirectoryObjectNotFoundException.

El siguiente ejemplo en C# muestra cómo enumerar las confianzas de un dominio y comprobar que cada confianza se ha establecido plenamente.

static void EnumAndVerifyDomainTrusts(
    Domain domain, 
    NetworkCredential targetCredentials)
{
    TrustRelationshipInformationCollection trusts;
    trusts = domain.GetAllTrustRelationships();

    foreach (TrustRelationshipInformation trust in trusts)
    {
        Console.WriteLine(
            String.Format("Trust between {0} and {1}:",
            trust.SourceName,
            trust.TargetName));
        
        Console.WriteLine(
            String.Format("\tTrust type: {0}",
            trust.TrustType.ToString()));
        
        Console.WriteLine(
            String.Format("\tTrust direction: {0}",
            trust.TrustDirection.ToString()));

        // Verify that the trust has been fully established.
        DirectoryContext context = new DirectoryContext(
            DirectoryContextType.Domain,
            trust.TargetName, 
            targetCredentials.UserName,
            targetCredentials.Password);
        Domain targetDomain = Domain.GetDomain(context);
        Console.WriteLine(targetDomain.Name);

        try
        {
            domain.VerifyTrustRelationship(
                targetDomain, 
                trust.TrustDirection);

            Console.WriteLine("Trust verified.");
        }
        catch (ActiveDirectoryObjectNotFoundException)
        {
            // The trust was not verified.
            Console.WriteLine("Trust not verified.");
        }
    }
}

Supresión de confianzas

Una vez que un lado de una relación de confianza se elimina, la confianza deja de estar establecida. En las confianzas de dominio, se utiliza el método DeleteLocalSideOfTrustRelationship para suprimir un lado único de una confianza. El método DeleteTrustRelationship se utiliza para suprimir ambos lados de una confianza con una llamada a un método único. Los métodos DeleteLocalSideOfTrustRelationship y DeleteTrustRelationship se utilizan para realizar las mismas acciones para las confianzas de bosque.

Autenticación selectiva

Si decide establecer SetSelectiveAuthenticationStatus en una confianza de bosque entrante, debe asignar permisos manualmente a cada dominio y recurso al que desee que los usuarios del segundo bosque tengan acceso. Para ello, establezca el derecho de acceso al control Permiso para autenticar en un objeto del usuario o grupo concreto del segundo bosque.

Cuando un usuario realiza la autenticación en una relación de confianza con la opción GetSelectiveAuthenticationStatus habilitada, se agrega un identificador de seguridad (SID) "Otra compañía" a los datos de autorización del usuario. La presencia de este SID provoca una comprobación en el dominio de recursos para garantizar que el usuario está autorizado para autenticar el servicio concreto. Una vez que el usuario se autentica, el servidor en que se autentica agrega el SID "Compañía" en el caso de que aún no esté presente el SID "Otra compañía". En el contexto de un usuario autenticado sólo puede estar presente uno de estos SID especiales.

Filtrado de SID

El filtrado de SID permite a los administradores hacer que los controladores de dominio de un dominio dado "pongan en cuarentena" un dominio de confianza. Esto hace que los controladores de dominio del dominio que confía quiten todos los SID que no sean relativos al dominio de confianza desde todos los datos de autorización que se reciban de dicho dominio. La cuarentena se lleva a cabo en el dominio que confía y se realiza dominio a dominio.

El filtrado SID bloquea la confianza transitiva de Windows 2000. Si un dominio en cuarentena se encuentra en la ruta de acceso de la confianza entre dos dominios, los usuarios de los dominios del otro lado del dominio en cuarentena no pueden obtener acceso a los recursos del dominio que impone la cuarentena. Por este motivo, los dominios en cuarentena deben ser dominios hoja, sus dominios hijo deben ser sólo dominios de recurso que no contengan cuentas de usuario o el dominio en cuarentena debe estar en un bosque independiente.

Un administrador de Windows 2000 no debe utilizar la característica de filtrado SID para crear un dominio de "acceso restringido" en un bosque. El escenario de cuarentena recomendado es poner en cuarentena solamente dominios de bosques separados. Se debe establecer una confianza desde el dominio que se va a proteger al dominio que se va a poner en cuarentena; a continuación, el dominio que confía se debe configurar para filtrar los SID desde el dominio de confianza.

Send comments about this topic to Microsoft.

Copyright © 2008 Microsoft Corporation. Reservados todos los derechos.