Código de amostra para usar direitos de gerenciamento de repositório associado

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:

  1. Instale o aplicativo wimperdomain no servidor com escopo definido para o domínio de segurança. Em um ambiente com vários domínios de segurança, você deve implementar o EJB do gerenciador de membro virtual em cada servidor de destino, onde o escopo do servidor esteja associado a esse domínio de segurança, para obter uma referência à instância do gerenciador de membro virtual nesse domínio. Este procedimento permite que você chame as APIs do gerenciador de membro virtual por meio do EJB para um domínio específico. Somente usuários com as funções de acesso obrigatórias para as APIs do gerenciador de membro virtual ou superusuários nesse domínio podem chamar as respectivas APIs.
  2. Crie um usuário no registro do usuário que corresponde ao domínio de segurança. Você deve ter efetuado login como administrador do WebSphere Application Server.
  3. Designe o usuário a uma função do gerenciador de membro virtual. As funções predefinidas válidas do gerenciador de membro virtual são IdMgrAdmin, IdMgrWriter e IdMgrReader.
  4. Acesse a instância do gerenciador de membro virtual que corresponde ao domínio de segurança com a consulta EJB. Em um ambiente de implementação de rede, o EJB no nó do servidor gerenciado deve ser consultado primeiro com o caminho absoluto do contexto (por exemplo, cell/nodes/myNode/servers/server1/ejbna, em que ejbna é o nome JNDI do EJB do gerenciador de membro virtual no servidor gerenciado, server1).
  5. Execute uma operação na instância do gerenciador de membro virtual que corresponde ao domínio de segurança como o usuário a quem foi designada uma função do gerenciador de membro virtual.

Pré-requisito

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.

  1. Instale o aplicativo wimperdomain no servidor com escopo definido para o domínio de segurança. O aplicativo wimperdomain.ear está disponível no diretório app_server_root/installableApps/. Implemente o aplicativo wimperdomain.ear no servidor de destino específico para o domínio. Você deve especificar um URL JNDI exclusivo para o EJB.
    $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 ]]]' )
  2. Crie um usuário vmmadmin no registro do usuário que corresponda ao domínio de segurança domain1. Você deve ter efetuado login como administrador do WebSphere Application Server.
    $AdminTask createUser {-uid vmmadmin –password tempPass -confirmPassword tempPass 
    –cn admincn –sn adminsn -securityDomainName domain1 }
  3. Designe a função IdMgrAdmin do gerenciador de membro virtual ao usuário vmmadmin no registro do usuário que corresponda ao domínio de segurança domain1.
    $AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domain1}

Código de Amostra

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.

  1. Acesse a instância do gerenciador de membro virtual que corresponde ao domínio de segurança domain1 com a consulta EJB. A JNDI do EJB é a mesma usada anteriormente na etapa 1 da seção Pré-requisitos.
  2. Crie um usuário em domain1 como o usuário vmmadmin que está designado a uma função de gerenciador de membro virtual na etapa 3 da seção Pré-requisitos.
    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();
            
        }
    }


Termos de uso | Feedback