As etapas de ponta a ponta, os comandos e os fragmentos de código de amostra exigidos para permitir que os usuários não administradores do WebSphere Application Server acessem as interfaces de programação de aplicativo (APIs) do gerenciador de membro virtual são fornecidos aqui.
Os direitos de gerenciamento de repositório associado permitem que os usuários não administradores do WebSphere Application Server gerenciem usuários e grupos e acessem outras APIs do gerenciador de membro virtual nos domínios de administração e de aplicativo. Leia sobre as funções predefinidas e suas permissões no tópico Fornecendo Segurança, na documentação do gerenciador de membro virtual. É possível usar os seguintes comandos wsadmin para implementar esse recurso: mapIdMgrUserToRole, mapIdMgrGroupToRole, removeIdMgrUsersFromRole, removeIdMgrGroupsFromRole e listIdMgrUsersForRoles. Para obter mais informações, leia sobre como usar esses comandos no tópico Grupo de comandos IdMgrConfig para o objeto AdminTask no centro de informações do WebSphere Application Server
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.
Você deve executar as seguintes etapas de configuração antes de usar o código de amostra. Inicie a ferramenta wsadmin e execute os seguintes comandos. Substitua as variáveis pelos valores reais que você deseja usar.
$AdminApp.install('app_server_root/installableApps/wimperdomain.ear',
'[-appname wimperdomain -BindJndiForEJBNonMessageBinding [[ wim.ejb
WIMService wimejb.jar,META-INF/ejb-jar.xml ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome]]
-MapModulesToServers [[ wim.ejb wimejb.jar,META-INF/ejb-jar.xml
WebSphere:cell=myCell,node=myNode,server=server1 ]]]' )
$AdminTask createUser {-uid vmmadmin –password tempPass -confirmPassword tempPass
–cn admincn –sn adminsn -securityDomainName domain1 }
$AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domain1}
Inclua o seguinte código de amostra de ponta a ponta no código do aplicativo conforme descrito nas etapas a seguir. Substitua as variáveis pelos valores reais que você deseja usar.
import commonj.sdo.DataObject;
public class SimpleTest extends BaseApp
{
public static void createAsAdmin()
{
try {
createUser("vmmadmin", "tempPass");
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void createUser(String user, String password) throws Exception
{
DataObject result = (DataObject) runAsUser(user, password, new java.security.PrivilegedExceptionAction()
{
public Object run() throws Exception
{
//Notar se a instância de serviço usada é a do domínio de segurança obtida na etapa 1.
DataObject root = service.createRootDataObject();
DataObject user = root.createDataObject(DO_ENTITIES, WIM_NS_URI, DO_PERSON_ACCOUNT);
user.set("uid", "authzzuser");
user.set("cn", "authzzuser");
user.set("sn", "authzzuser");
user.set(PROP_PASSWORD, com.ibm.websphere.wim.util.PasswordUtil
.getByteArrayPassword("authzzuser"));
// Imprimir o gráfico de dados de entrada
System.out.println("Gráfico de dados de entrada antes de criar o usuário"+ printDO(root));
DataObject retObject = service.create(root);
// Imprimir o gráfico de dados de saída
System.out.println("Gráfico de dados de saída depois de criar o usuário" + printDO(retObject));
return retObject;
}
});
}
public static void main(String[] args)
{
// Observe que a JNDI do EJB é a mesma usada na etapa 1.
service = locateService("ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome");
createAsAdmin();
}
}