Cet exemple de fragment de code et ces graphiques de données permettent d'extraire les groupes imbriqués à l'aide de la méthode get() et de GroupMembershipControl.
L'exemple de fragment de code et les graphiques de données abordent les étapes suivantes :
Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation.
Ajoutez le fragment de code ci-après à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser.
/**
* testNestedGroupsSnippet
* Ce test effectue les opérations suivantes :
* Il crée deux groupes
* Il crée un utilisateur
* Il ajoute l'utilisateur à group1
* Il ajoute group1 comme membre de group2
* Il extrait l'appartenance de l'utilisateur
*/
public static void testNestedGroupsSnippet()
{
// Création de deux groupes
addGroup("group1");
addGroup("group2");
// Ajout d'un utilisateur
addPersonAccount("user1","user1cn","user1sn");
// Ajout du membre user1 au groupe group1
addMemberToGroup(user1Dn,group1Dn);
// Ajout de group1 comme membre de group2
addMemberToGroup(group1Dn,group2Dn);
// Extraction de l'appartenance utilisateur du membre user1 pour vérifier s'il est membre des deux groupes 1 et 2
getGroupMembership(user1Dn);
}
/**
* addGroup Ajoute une entité de type Groupe
* @param valeur cn à définir
*/
public static void addGroup(String cn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Définition du nom usuel du groupe
entity.set("cn", cn);
System.out.println("Input data graph before creating group"+ printDO(root));
// Création de l'entité group
root = service.create(root);
System.out.println("Output data graph after creating group"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* addPersonAccount
* Ajoute une entité de type PersonAccount
* @param valeur uid à définir
* @param valeur cn à définir
* @param valeur sn à définir
*/
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);
// Définition des propriétés de la personne
entity.set("uid", uid);
entity.set("cn", cn);
entity.set("sn", sn);
System.out.println("Input data graph before creating user"+ printDO(root));
// Création de l'entité PersonAccount
root = service.create(root);
System.out.println("Output data graph after creating user"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* addMemberToGroup ajoute un utilisateur au groupe
* @param memberDn nom unique du groupe
* @param groupDn nom unique du groupe
*/
public static void addMemberToGroup(String memberDn, String groupDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Définition du nom unique du groupe
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
groupDn);
DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI, SchemaConstants.DO_ENTITY);
// Définition du nom unique du membre
member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
memberDn);
// Ajout du membre au groupe
entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
System.out.println("Input datagraph before adding member to group"+ printDO(root));
// Mise à jour du groupe
root = service.update(root);
System.out.println("Output datagraph after adding member to group"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* getGroupMembership extrait les groupes imbriqués
* @param memberDn nom unique du groupe
*/
public static void getGroupMembership(String memberDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
// Définition du nom unique du groupe
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
memberDn);
// Définition du contrôle de l'appartenance aux groupes
DataObject grpMbrshipCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_GROUP_MEMBERSHIP_CONTROL);
// Définition de la propriété de niveau pour extraire toutes les entités imbriquées
grpMbrshipCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
// Extraction de l'attribut cn pour tous les groupes
grpMbrshipCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
System.out.println("Input data graph before getting group membership of user"+ printDO(root));
// Extraction des membres du groupe
root = service.get(root);
System.out.println("Output data graph after getting group membership of user"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
Graphique de données d'entrée pour la création de 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>
Graphique de données de sortie après la création de 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>
Graphique de données d'entrée pour la création de group2 :
Graphique de données d'entrée avant création du groupe
<?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>
Graphique de données de sortie après la création 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>
<?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>
<?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>
<?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>
<?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>
Graphique de données d'entrée pour l'ajout de group1 en tant que membre 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>
Graphique de données de sortie après l'ajout de group1 comme membre 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>
Graphique de données d'entrée pour l'extraction de l'appartenance aux groupes d'un utilisateur :
<?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>
Graphique de données de sortie après l'extraction de l'appartenance aux groupes d'un utilisateur, qui affiche les groupes auxquels l'utilisateur appartient :
<?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>