Código de ejemplo para obtener grupos anidados

Utilice el fragmento de código y los gráficos de datos de ejemplo para obtener grupos anidados utilizando el método get() y GroupMembershipControl.

El fragmento de código y los gráficos de datos de ejemplo incluyen los pasos siguientes:

  1. Crear dos grupos.
  2. Crear un usuario.
  3. Añadir el usuario como miembro de uno de los grupos nuevos.
  4. Añadir el grupo como miembro del otro grupo nuevo.
  5. Obtener la pertenencia a grupos del usuario utilizando el método get() y GroupMembershipControl.

Requisitos previos

Asegúrese de leer la información y completar los pasos que se describen en el tema Requisitos previos de programación.

Debe tener la configuración necesaria para recuperar y gestionar grupos anidados. Para obtener información sobre estos valores de configuración, consulte los temas siguientes:

Código de ejemplo

Añada el siguiente fragmento de código al código de aplicación y sustituya las variables por los valores reales que desea utilizar.

/**
 *  testNestedGroupsSnippet 
 *  Esta prueba realiza lo siguiente:
 *  Crea dos grupos
 *  Crea un usuario
 *  Añade el usuario a group1
 *  Añade group1 como miembro de group2
 *  Obtiene la pertenencia del usuario
 */
public static void testNestedGroupsSnippet()
{
    // Crear dos grupos
    addGroup("group1");
    addGroup("group2");
    // Añadir un usuario
    addPersonAccount("user1","user1cn","user1sn");
    // Añadir el miembro user1 al grupo group1
    addMemberToGroup(user1Dn,group1Dn);
    // Añadir group1 como miembro de group2
    addMemberToGroup(group1Dn,group2Dn);
    // Obtener la pertenencia de usuario del miembro user1 para comprobar si es miembro de los grupos 1 y 2
    getGroupMembership(user1Dn);
}

/**
 *  addGroup Añade una entidad del tipo Group
 *  @param cn valor que debe establecerse
 */
public static void addGroup(String cn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
        // Establecer el cn del grupo
        entity.set("cn", cn);
        System.out.println("Input data graph before creating group"+ printDO(root));
        // Crear la entidad de grupo
        root = service.create(root); 
        System.out.println("Output data graph after creating group"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
}

/** 
 *  addPersonAccount 
 *  Añade una entidad del tipo de entidad PersonAccount
 *  @param uid valor que debe establecerse
 *  @param cn valor que debe establecerse
 *  @param sn valor que debe establecerse
 */
public static void addPersonAccount(String uid, String cn, String sn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
        // Establece las propiedades de la persona
        entity.set("uid", uid);
        entity.set("cn", cn);
        entity.set("sn", sn);
        System.out.println("Input data graph before creating user"+ printDO(root));
        // Crear la entidad PersonAccount
        root = service.create(root); 
        System.out.println("Output data graph after creating user"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
}

/**
 *  addMemberToGroup añade un usuario al grupo
 *  @param memberDn uniqueName del grupo
 *  @param groupDn uniqueName del grupo
 */
public static void addMemberToGroup(String memberDn, String groupDn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
        // Establecer el uniqueName de grupo
        entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                groupDn);
        DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI, SchemaConstants.DO_ENTITY);
        // Establecer el uniqueName de miembro
        member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
                memberDn);
        // Añadir el miembro al grupo
        entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
        System.out.println("Input datagraph before adding member to group"+ printDO(root));
        // Actualizar el grupo
        root = service.update(root);        System.out.println("Output datagraph after adding member to group"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
}

/**
 *  getGroupMembership obtiene los grupos anidados
 *  @param memberDn uniqueName del grupo
 */
public static void getGroupMembership(String memberDn)
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
        // Establecer el uniqueName del grupo
        entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME, 
                memberDn);
        // Establecer el control de pertenencia a grupos
        DataObject grpMbrshipCtrl = SDOHelper.createControlDataObject(root, null,
                SchemaConstants.DO_GROUP_MEMBERSHIP_CONTROL);
        // Establecer la propiedad de nivel para recuperar todas las entidades anidadas
        grpMbrshipCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
        // Recuperar atributo cn para todos los grupos
        grpMbrshipCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
        System.out.println("Input data graph before getting group membership of user"+ printDO(root));
        // Obtener los miembros del grupo
        root = service.get(root);		        System.out.println("Output data graph after getting group membership of user"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
}

Gráficos de datos de entrada y salida

Gráfico de datos de entrada para crear group1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:cn>group1</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear group1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="30a09674-ec3b-449b-ab80-6090bcf5b9c4" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para crear group2:

Gráfico
de datos de entrada antes de crear el grupo
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:cn>group2</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="95f83f2c-f477-4273-badd-acb7cf1773fe" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de datos de entrada para crear un usuario:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:uid>user1</wim:uid>
      <wim:cn>user1cn</wim:cn>
      <wim:sn>user1sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de datos de salida después de crear un usuario:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de datos de entrada para añadir un usuario a un grupo:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Gráfico de datos de salida después de añadir un usuario a un grupo:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para añadir group1 como miembro de group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de añadir group1 como miembro de group2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="95f83f2c-f477-4273-badd-acb7cf1773fe" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para obtener la pertenencia a grupos de un usuario:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:GroupMembershipControl" level="0">
      <wim:properties>cn</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de obtener la pertenencia a grupos de un usuario; muestra los grupos a los que pertenece el usuario:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="d8b05414-6965-456f-8284-3971515f8d32" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      <wim:groups>
        <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="f882e5f4-083c-41b2-9475-232881df1933" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
        <wim:cn>group1</wim:cn>
      </wim:groups>
      <wim:groups>
        <wim:identifier externalName="cn=group2,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="385759ea-cc55-47c6-a788-0f15bcc1c011" uniqueName="cn=group2,o=defaultWIMFileBasedRealm"/>
        <wim:cn>group2</wim:cn>
      </wim:groups>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>


Condiciones de uso | Comentarios