Código de ejemplo para utilizar derechos de gestión de depósito federado

Se proporcionan los pasos completos, mandatos y fragmentos de código de ejemplo necesarios para permitir que los usuarios que no son administradores de WebSphere Application Server accedan a las interfaces de programación de aplicaciones (API) en un entorno de dominio de seguridad múltiple.

Los derechos de gestión de depósito federado permiten que los usuarios que no son administradores de WebSphere Application Server gestionen usuarios y grupos, y accedan a las API de virtual member manager en dominios de administración y aplicación. Lea sobre los roles predefinidos y sus permisos en el tema Suministro de seguridad, en la documentación de virtual member manager. Puede utilizar los siguientes mandatos wsadmin para implementar esta característica: mapIdMgrUserToRole, mapIdMgrGroupToRole, removeIdMgrUsersFromRole, removeIdMgrGroupsFromRole y listIdMgrUsersForRoles. Para obtener más información, lea sobre cómo utilizar estos mandatos en el tema Grupo de mandatos IdMgrConfig para el objeto AdminTask en el Information Center de WebSphere Application Server

En este escenario de ejemplo se incluyen los pasos siguientes:

  1. Instale la aplicación wimperdomain en el servidor que está en el ámbito del dominio de seguridad. En un entorno de dominio de seguridad múltiple, debe desplegar el EJB de virtual member manager en cada servidor de destino, donde el ámbito de servidor está asociado con el dominio de seguridad, para obtener una referencia a la instancia de virtual member manager en ese dominio. Este procedimiento le permite invocar las API de virtual member manager mediante EJB para un dominio específico. Tan solo los usuarios con los roles de acceso necesarios para las API de virtual member manager o los superusuarios de dicho dominio pueden invocar las API correspondientes.
  2. Cree un usuario en el registro de usuarios que corresponda al dominio de seguridad. Debe haber iniciado sesión como administrador de WebSphere Application Server.
  3. Asigne el usuario a un rol de virtual member manager. Los roles predefinidos válidos de virtual member manager son IdMgrAdmin, IdMgrWriter e IdMgrReader.
  4. Acceda a la instancia de virtual member manager que corresponda al dominio de seguridad con búsqueda de EJB. En un entorno de despliegue de red, el EJB en el nodo de servidor gestionado debe buscarse primero con la vía de acceso absoluta del contexto (por ejemplo, cell/nodes/myNode/servers/server1/ejbna donde ejbna es el nombre de JNDI del EJB de virtual member manager en el servidor gestionado, server1).
  5. Realice una operación en la instancia de virtual member manager que corresponda al dominio de seguridad como usuario al que se asigna un rol de virtual member manager.

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 realizar los siguientes pasos de configuración para poder utilizar el código de ejemplo. Inicie la herramienta wsadmin y ejecute los mandatos siguientes. Sustituya las variables por los valores reales que desea utilizar.

  1. Instale la aplicación wimperdomain en el servidor que está en el ámbito del dominio de seguridad. La aplicación wimperdomain.ear está disponible en el directorio app_server_root/installableApps/. Despliegue la aplicación wimperdomain.ear en el servidor de destino específico para el dominio. Debe especificar un URL de JNDI exclusivo para el 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. Cree un usuario vmmadmin en el registro de usuarios que corresponda al dominio de seguridad domain1. Debe haber iniciado sesión como administrador de WebSphere Application Server.
    $AdminTask createUser {-uid vmmadmin –password tempPass -confirmPassword tempPass 
    –cn admincn –sn adminsn -securityDomainName domain1 }
  3. Asigne el rol de virtual member manager IdMgrAdmin al usuario vmmadmin en el registro de usuarios que corresponde al dominio de seguridad domain1.
    $AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domain1}

Código de ejemplo

Añada el código de ejemplo completo al código de aplicación como se describe en los pasos siguientes. Sustituya las variables por los valores reales que desea utilizar.

  1. Acceda a la instancia de virtual member manager que corresponde al dominio de seguridad domain1 con la búsqueda de EJB. El JNDI de EJB es igual que el utilizado previamente en el paso 1 de la sección Requisitos previos.
  2. Cree un usuario en domain1 como usuario vmmadmin que ha asignado un rol de virtual member manager en el paso 3 de la sección Requisitos previos.
    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
                {
                    //Observe que la instancia de servicio usada es del dominio de seguridad obtenido en el paso 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 gráfico de datos de entrada
                    System.out.println("Input datagraph before creating user" + printDO(root));
                    DataObject retObject = service.create(root);
                    // Imprimir gráfico de datos de salida
                    System.out.println("Output datagraph after creating user" + printDO(retObject));
                    return retObject;
                }
            });
        }
    
        public static void main(String[] args)
        {
            // Observe que el JNDI de EJB es igual que el utilizado en el paso 1.
            service = locateService("ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome");
            createAsAdmin();
            
        }
    }


Condiciones de uso | Comentarios