Use o código de amostra de ponta a ponta e os gráficos de dados para operações básicas envolvendo usuários, grupos, membros de grupos e associações a grupos.
As etapas a seguir são cobertas neste cenário de amostra:
Assegure-se de ter lido as informações e concluído as etapas descritas no tópico Pré-requisitos de Programação.
Inclua o seguinte código de amostra de ponta a ponta no código do aplicativo e substitua as variáveis pelos valores reais que você deseja usar.
public class UserAndGroupSample extends BaseApp
{
// Definir DNs de usuários e grupos
private static String user1Dn = "uid=user1,o=defaultWIMFileBasedRealm";
private static String user2Dn = "uid=user2,o=defaultWIMFileBasedRealm";
private static String group1Dn = "cn=group1,o=defaultWIMFileBasedRealm";
private static String group2Dn = "cn=group2,o=defaultWIMFileBasedRealm";
private static String EJB_JNDI_NAME = "ejb/com/ibm/websphere/wim/ejb/WIMServiceHome";
/**
* Esta amostra executa as seguintes operações:
* Cria um usuário
* Cria um grupo
* Designa o usuário ao grupo
* Obtém os membros do grupo
* Obtém a associação ao grupo
* Remove o usuário do grupo
* Exclui um usuário
* Exclui um grupo
*/
public static void main(String[] args) throws Exception {
// Inicializar o serviço de perfil
locateService(EJB_JNDI_NAME);
// Criar um usuário e um grupo respectivamente
addPersonAccount("user1","user1cn","user1sn");
addGroup("group1");
// Incluir o membro user1 no grupo
addMemberToGroup(user1Dn,group1Dn);
// Obter os membros do grupo
getGroupMembers(group1Dn);
// Obter a associação ao grupo
getGroupMembership(user1Dn);
// Remover o membro user1 do grupo
removeMemberFromGroup(user1Dn,group1Dn);
// Excluir o user1
deleteEntity(user1Dn);
// Excluir o group1
deleteEntity(group1Dn);
}
/**
* addPersonAccount
* Inclui uma entidade do tipo PersonAccount
* @param uid valor a ser configurado
* @param cn valor a ser configurado
* @param sn valor a ser configurado
*/
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);
// Configurar as propriedades da pessoa
entity.set("uid", uid);
entity.set("cn", cn);
entity.set("sn", sn);
System.out.println("Gráfico de dados de entrada antes de criar o usuário"+ printDO(root));
// Criar a entidade PersonAccount
root = service.create(root);
System.out.println("Gráfico de dados de saída depois de criar o usuário"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* addGroup Inclui uma entidade do tipo Group
* @param cn valor a ser configurado
*/
public static void addGroup(String cn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Configurar o cn do grupo
entity.set("cn", cn);
System.out.println("Gráfico de dados de entrada antes de criar o grupo"+ printDO(root));
// Criar a entidade group
root = service.create(root);
System.out.println("Gráfico de dados de saída depois de criar o grupo"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* addMemberToGroup inclui um usuário no grupo
* @param memberDn uniqueName do membro
* @param groupDn uniqueName do grupo
*/
public static void addMemberToGroup(String memberDn, String groupDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Configurar o uniqueName do grupo
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
groupDn);
DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI,
SchemaConstants.DO_ENTITY);
// Configurar o uniqueName do membro
member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
memberDn);
// Incluir o membro no grupo
entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
System.out.println("Gráfico de dados de entrada antes de incluir membro no grupo"+ printDO(root));
// Atualizar o grupo
root = service.update(root);
System.out.println("Gráfico de dados de saída depois de incluir membro no grupo"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* getGroupMembers Retorna os membros do grupo
* @param groupDn uniqueName do grupo
*/
public static void getGroupMembers(String groupDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Configurar o uniqueName do grupo
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
groupDn);
// Configurar o controle de propriedade
DataObject propCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_PROPERTY_CONTROL);
//Recuperar o cn do grupo cujos membros precisam ser procurados
propCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
// Configurar o controle de membro do grupo
DataObject grpMbrCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_GROUP_MEMBER_CONTROL);
// Recuperar os atributos cn e uid para todos os membros
grpMbrCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
grpMbrCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
System.out.println("Gráfico de dados de entrada antes de obter membros do grupo"+ printDO(root));
// Obter os membros do grupo
root = service.get(root);
System.out.println("Gráfico de dados de saída depois de obter membros do grupo"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* getGroupMembership Obtém os grupos aos quais o usuário pertence
* @param memberDn uniqueName do usuário
*/
public static void getGroupMembership(String memberDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null,
SchemaConstants.DO_PERSON_ACCOUNT);
// Configurar o uniqueName do grupo
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
memberDn);
// Configurar o controle de associação ao Grupo
DataObject grpMbrshipCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_GROUP_MEMBERSHIP_CONTROL);
// Configurar a propriedade de nível para recuperar todas as entidades aninhadas
grpMbrshipCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
// Recuperar o atributo cn para todos os grupos
grpMbrshipCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
System.out.println("Gráfico de dados de entrada antes de obter associação ao grupo do usuário"+ printDO(root));
// Obter os membros do grupo
root = service.get(root);
System.out.println("Gráfico de dados de saída depois de obter associação ao grupo do usuário"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* removeMemberFromGroup remover o usuário do grupo
* @param memberDn uniqueName do usuário
* @param groupDn uniqueName do grupo
*/
public static void removeMemberFromGroup(String memberDn, String groupDn)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
// Configurar o uniqueName do grupo
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
groupDn);
DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI,
SchemaConstants.DO_ENTITY);
// Configurar o uniqueName do membro a ser removido
member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
memberDn);
// Recuperar o membro para removê-lo do grupo
entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
// Configurar o controle de membro do grupo
DataObject grpMbrCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_GROUP_MEMBER_CONTROL);
// Modo remover designação para remover o membro do grupo
grpMbrCtrl.setInt(SchemaConstants.PROP_MODIFY_MODE, SchemaConstants.VALUE_MODIFY_MODE_UNASSIGN);
System.out.println("Gráfico de dados de entrada antes de remover membro do grupo"+ printDO(root));
// Atualizar o grupo para remover o membro
root = service.update(root);
System.out.println("Gráfico de dados de saída depois de remover membro do grupo"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* deleteEntity Exclui a determinada entidade
* @param entityName
*/
public static void deleteEntity(String entityName)
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_ENTITY);
// Configurar o controle de exclusão
DataObject ctrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_DELETE_CONTROL);
// Configurar a propriedade de retorno após a exclusão
ctrl.setBoolean(SchemaConstants.PROP_RETURN_DELETED, true);
// Configurar o uniqueName da entidade a ser excluída
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
entityName);
System.out.println("Gráfico de dados de entrada antes de excluir entidade"+ printDO(root));
// Excluir a entidade
root = service.delete(root);
System.out.println("Gráfico de dados de saída depois de excluir a entidade"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Os gráficos de dados de entrada e os gráficos de dados de saída resultantes para cada etapa deste exemplo são fornecidos a seguir.
<?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:cn>group1</wim:cn>
</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>
<?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>
<?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:entities>
<wim:controls xsi:type="wim:PropertyControl">
<wim:properties>cn</wim:properties>
</wim:controls>
<wim:controls xsi:type="wim:GroupMemberControl">
<wim:properties>cn</wim:properties>
<wim:properties>uid</wim:properties>
</wim:controls>
</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:cn>group1</wim:cn>
<wim:members 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:uid>user1</wim:uid>
<wim:cn>user1cn</wim:cn>
</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:PersonAccount">
<wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
</wim:entities>
<wim:controls xsi:type="wim:GroupMembershipControl">
<wim:properties>cn</wim:properties>
</wim:controls>
</wim:Root>
</sdo:datagraph>
Gráfico de dados de saída depois de obter os grupos aos
quais um usuário pertence:<?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:groups>
<wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
<wim:cn>group1</wim:cn>
</wim:groups>
</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:controls xsi:type="wim:GroupMemberControl" modifyMode="3"/>
</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>
<?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>
<wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
</wim:entities>
<wim:controls xsi:type="wim:DeleteControl" returnDeleted="true"/>
</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>
<wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
</wim:entities>
<wim:controls xsi:type="wim:DeleteControl" returnDeleted="true"/>
</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>