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:
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.
$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}
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.
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();
}
}